Вы находитесь на странице: 1из 61

Programacin

Programacin Estructurada y Seudo


Cdigo
Programacin en entorno MatLab
Ing. Eugenio Kolb
Ctedras: nformtica Bsica Informtica Aplicada
Carrera: Ingeniera Qumica
acultad de !iencias E"actas# Qumicas y $aturales %!EQy$&
'ni(ersidad $acional de )isiones %'$a)&
Posadas# )isiones Argentina
$o(iembre de *++,

Programacin
Parte I
P-./-A)A!I0$ E12-'!2'-A3A /E$E-A4
I& Introduccin
La informacin y los datos transmitidos y almacenados por una computadora, en una pri-
mera aproximacin, estn constituidos por ceros y unos. Es decir, se establece una asociacin de
seales fsicas determinadas asociadas a smbolos y conceptos del lenguaje humano escrito. La
existencia de corriente eclctica en micro-conductores (cables, circuitos impresos, etc.), o de per-
foraciones en lugares predeterminados en tarjetas de cartn, o quemaduras en lugares estableci-
dos en discos, u orientaciones determinadas de partculas de material magntico ubicadas en de-
terminada localizacin de un disco; de existir, significan 1. En caso contrario, significan 0.
La utilizacin de 0 y 1 como clulas bsicas de datos e informacin, debe ser
comprendida, si se pretende incursionar en la adquisicin de conocimientos de Hardware
(equipos, dispositivos y adaptadores fsicos), o de desarrollo de Software (escritura de programas
para resolver problemas).
Posteriores codificaciones utilizaron grupos de esas seales fsicas para llevar la traduc-
cin de la informacin fsica a la interpretacin humana.
Se denomin Cdigo Binario a la combinacin de sucesivos y agrupados datos bsicos
(ceros y unos, denominados Bits). Se lleg a entidades mayores: combinando 8 de esos elemen-
tos (256 combinaciones distintas posibles), se logr un cdigo superior, identificable por el
humano comn. Surgen all el cdigo Decimal y el cdigo ASC (Anexo 1).
Durante la Primera Generacin de Computadoras, existan Programadores que usaban
tecnologa 5/4 ("First Generation Language: Lenguaje de Primera /eneracin). Manejaban 0 y
1, muchas veces con tarjetas de cartn perforadas (donde exista perforacin = 1, caso contrario =
0), en enormes computadoras de costo millonario, y donde exista una muy organizada y bien re-
munerada divisin de las tareas especializadas.
En esa distribucin del trabajo, los Programadores usaban un restringido set de ordenes e
instrucciones, escritos en "4engua6e de )7uina (ceros y unos).
Posteriormente, se incorporaron las definiciones "Lenguajes de Bajo Nivel y de "Alto Ni-
vel: cuando ms alto es el nivel, ms comprensible es por el usuario comn. El 1GL es el de ms
Bajo Nivel.
Un avance se logr con el lenguaje "ensamblador o "Assembler, originando el */4 ("Se-
cond Generation Language). El lenguaje de 1egunda /eneracin segua siendo un lenguaje de
Bajo Nivel: se escriben las instrucciones de manera simblica, usando cdigos mnemotcnicos.
Se puede empezar a usar identificadores: total, x, y (en vez de direcciones fsicas escritas bina-
riamente). Se pueden incorporar comentarios (importantes para la documentacin). Y, empieza a
utilizarse un set restringido de instrucciones (STO, LOA, ADD, NP, MOV, END, etc.).
A continuacin, surgen los 8/4 ("Third Generation Language), lenguajes de 2ercera /e 9
neracin, tambin denominados "Lenguajes de Procedimientos. Son los primeros de Alto Nivel,
caracterizados por la siguiente novedad: todas las instrucciones (que a su vez son grupos de ins-
trucciones bsicas de las generaciones anteriores, agrupadas bajo un nombre), son lo ms se-
mejante al habla humana, y hacen abstraccin del equipo en que se ejecutar o correr el pro-
grama. Por ello, se dice que son portables los programas de este entorno: no estn "pensados
para funcionar en una mquina determinada (no como ocurra con las anteriores direcciones fsi-
cas o!ligadas, dependientes de la arquitectura fsica del ordenador).
Eugenio Kolb 1
Programacin
Se desarrollan distintos "diomas, distintos 4engua6es para escribir las nstrucciones y los
Programas: Basic, Pascal. Cobol, C, Fortran, etc.
En esta tercera generacin, de manera simultnea, disminuyen los costos de las computa-
doras y se extiende su uso en amplios sectores de la poblacin. Sin embargo, la inexistencia an
de utilitarios poderosos (hojas de clculos, asistentes para la gestin de bases de datos y genera-
cin de informes, programas estandarizados especializados en tareas especficas, etc.); llev a la
formacin de una generacin de programadores: para utilizar una computadora se requeran co-
nocimientos slidos en cuando al uso del sistema operativo, y, al menos, generales, de programa-
cin.
En los :/4 ("Fourth Generation Language), lenguajes de !uarta /eneracin, tambin
denominados "lenguajes orientados a problemas especficos; se incluyen interfaces grficas, len-
guajes de consulta de bases de datos, generadores de informes, mdulos pre-programados, ge-
neradores de formularios y aplicaciones, asistentes poderosos, etc. mportantes resultados ya los
pueden obtener usuarios con limitados conocimientos en informtica, sin necesidad de contratar el
desarrollo de una aplicacin "a medida.
Se pueden denominar ;/4 a ciertos lenguajes orientados a aplicaciones en inteligencia ar-
tificial, sistemas expertos, juegos, robtica, etc.
En todos los casos (y como sigue ocurriendo an hoy), se debe realizar la compilacin de
los programas (usando los programas !ompiladores correspondientes a cada Lenguaje). El ob-
jetivo es llevar el cdigo al lengua"e de !a"o ni#el$ comprensi!le por la m%uina.
Desde la escritura engorrosa de ceros y unos para formar las instrucciones bsicas, a la
utilizacin de poderosos asistentes que auto-generan programas, formularios, bases de datos,
informes, etc.; han pasado algunas dcadas. Existi un momento en que el estudio de la progra-
macin ha tenido amplio inters, para luego decaer marcadamente, entre los usuarios comunes.
Sin embargo, muchos problemas en la ngeniera y otras disciplinas, solo pueden ser encarados
diseando un algoritmo y traducindolo a cdigo escrito en un lenguaje determinado
II& Etapas de la solucin de un problema %desarrollo de un
Programa&
En general, se puede resumir el conjunto de etapas entre el momento en que surge la ne-
cesidad de desarrollar un Programa, y el momento en que el mismo ya puede ser utilizado sin
errores, de la siguiente manera:
A) &escripci'n del (ro!lema
A) )lecci'n o &ise*o del Algoritmo
B) Codificacin +en un lengua"e %ue la computadora reconozca)
C) ,ngreso del C'digo - )"ecuci'n del (rograma en la computadora
&) Correcci'n$ prue!as - optimizaci'n del (rograma
.) &ocumentaci'n - mantenimiento del programa
A) El desarrollo de un Programa surge ante la existencia de un (ro!lema. La descripcin
del problema es general, y se realiza usando terminologa comn. Se detallan los resultados bus-
cados, sin dejar de describir los datos disponibles y la manera que sern suministrados.
B) Un Algoritmo es un conjunto finito de instrucciones que especifican una secuencia de
acciones a realizar en orden para resolver un problema especfico.
El Algoritmo debe cumplir con 4 propiedades principales:
Eugenio Kolb 2
Programacin
Secuencialidad : mantener un orden de ejecucin de las instrucciones, entrada de datos y
salida de resultados
No Ambigedad : el algoritmo debe ser definido, claro, preciso. No ambiguo.
Generalidad : debe resolverse para casos generales. Por ejemplo: buscar el valor n en el
archivo, en vez del nmero 17.
Limitacin : deben establecerse los lmites y criterios de manera explcita. Por ejemplo, de
buscarse un valor en un archivo, se explicitarn los casos en que la bsqueda debe ser
suspendida.
En general, durante las primeras generaciones de computadoras, se usaba el mtodo gr-
fico del Diagrama de Flujo. Es la representacin grfica ms extendida de la solucin algortmica
de un problema. Para disearlos se utilizan determinados smbolos o figuras que representan una
accin dentro del procedimiento. Utilizan unos smbolos normalizados, con los pasos del algoritmo
escritos en el smbolo adecuado y los smbolos unidos con flechas, denominadas lneas de flujo,
que indican el orden en que los pasos deben ser ejecutados. (ara su ela!oraci'n se siguen cier-
tas reglas/
Se escribe de arriba hacia abajo y de izquierda a derecha
Siempre se usan flechas verticales u horizontales, jams curvas
Evitar cruce de flujos
En cada paso expresar una accin concreta
Por otra parte, la secuencia de flujo normal en una solucin de problema, es la siguiente:
Tiene un inicio
Una lectura o entrada de datos
El proceso de datos
Una salida de informacin
Un final
Al surgir la (rogramaci'n )structurada (que limitaba las secuencias de acciones a conjun-
tos y subconjuntos de las mismas, en cada caso con un claro ,nicio y un claro Final), las restric-
ciones incorporadas no invalidaron esta manera de relatar el Algoritmo, pero obligaron a eliminar
licencias y excesos que antes quedaban a libre criterio del programador. Algoritmos desarrollados
anteriormente dejaron de ser viables.
Debido a esto, otros mtodos grficos surgieron ya adaptados a la programacin estructu-
rada. Un ejemplo de ellos es el de los Diagramas N-S. son herramientas que favorecen la pro-
gramacin estructurada y renen caractersticas grficas propias de diagramas de flujo y lingsti-
cas propias de seudo cdigos. Constan de una serie de cajas contiguas que se leern siempre de
arriba-abajo, y sus estructuras lgicas tambin tienen una representacin grfica
En general, los mtodos grficos (en el papel) son muy explicativos, pero requieren engo-
rrosas tareas de re-dibujo ante cada modificacin.
La (rogramaci'n )structurada llev a crear nuevos Lenguajes de Programacin, y a
sucesivas nuevas versiones de Lenguajes ms antiguos, creando nuevas estructuras e
instrucciones. Se lleg al punto en que los distintos Lenguajes pasaron a presentar (en cuanto a
estructuras lgicas), diferencias menores. El surgimiento de un Lenguaje relatado en t0rminos
cotidianos del idioma com1n, si bien no compilable (- por lo tanto sin la rigidez distracti#a de las
exigencias de sintaxis), result evidente. En ese momento surge el 1eudo !digo o 1eudo
4engua6e (seudo = falso). No es realmente un lenguaje sino una imitaci'n y una versin
abreviada de instrucciones reales para las computadoras. Es una tcnica para diseo de
programas que permite definir las estructuras de datos, las operaciones que se aplicarn a los
datos y la lgica que tendr el programa de computadora para solucionar un determinado
problema. Utiliza un seudo-lenguaje muy parecido a nuestro idioma, pero que respeta las
directrices y los elementos de los lenguajes de programacin. Se concibi para superar las dos
Eugenio Kolb 3
Programacin
principales desventajas de los flujogramas: lentos de crear y difcil de modificar sin un nuevo
dibujo
Muchos problemas se pueden resolver utilizando Algoritmos ya desarrollados. En esos ca-
sos, modificaciones y adaptaciones menores de los mismos son suficientes para continuar con las
siguientes etapas.
III& Programacin con 1eudo !digo
Luego de la 3escripcin del Problema (usando lo lgica comn, con un relato y recuento
de los datos disponibles, y los resultados buscados), se describirn las acciones (instrucciones,
rdenes, etc.), que resolvern el problema.
En cuanto a la Eleccin o 3ise<o del Algoritmo, se refiere a la manera de representar
grficamente los pasos que luego se traducirn a instrucciones y sentencias en algn lenguaje.
Los Diagramas de Flujo (Flo2 C3art) se han utilizado masivamente durante el desarrollo de las
primeras generaciones de computadoras. Con el surgimiento de lenguajes de alto nivel, se empie-
zan a incorporar estructuras ms poderosas que a su vez son conjuntos de estructuras simples.
Por otra parte, se impone la divisin modular y estructurada de los programas (evitando las tan
abundantes licencias y estilos de los programadores, que originaban muchas veces extensos pro-
gramas solo por ellos comprendidos) Surgen mtodos estructurados de diagramacin: se ha ci-
tado, por ejemplo, el diagrama N-S. Y, se empieza a usar el Seudo C'digo ("falso cdigo). Los
Diagramas de Flujo siguen siendo usados, sin embargo, para representar etapas, interrelaciones,
etc.; de conjuntos ms globales del programa, o de interrelaciones de programas y bases de datos
entre s, etc.
Este mtodo, que permite la modificacin rpida del programa sin la necesidad de redibu-
jar la secuencia, utiliza el lenguaje cotidiano en el idioma propio del programador: "mostrar, "in-
gresar, "desde, "hasta, "si (condicional), "mientras, "entonces, etc. Las estructuras de progra-
macin son realmente pocas, y tienen una traduccin directa a cualquier lenguaje moderno.
En este trabajo optaremos, para el Diseo del Algoritmo, el Seudo Cdigo o Seudo Len-
guaje de Programacin. El resto de la Parte de este trabajo consistir en la descripcin de las
Estructuras que representan las Acciones a realizar.
Las restantes etapas del Desarrollo de un Programa +Codificacin +en un lengua"e %ue la
computadora reconozca), ngreso del Cdigo ! "jecucin del #rograma en la computadora,
Correccin, pruebas ! optimi$acin del #rograma% ! Documentacin ! mantenimiento del
programa), necesariamente deben realizarse en el Entorno de Trabajo de un Lenguaje de
Programacin. En la #arte de este trabajo, describiremos las principales herramientas y con-
ceptos que permiten Programar o, directamente, usar los poderosos recursos del )at4ab.
#artes de un #rograma&
Bsicamente, un programa tiene 3 partes: en la primera, se
ingresan los datos necesarios. En la segunda, se realiza el
procesamiento de los datos. En la tercera, se obtiene la salida de los
resultados.
Los datos permanecen en la memoria almacenados en variables,
numricas, alfanumricas, lgicas, etc.
Un programa tiene un inicio y un final, y las acciones a realizar
estn indicadas por nstrucciones o Sentencias, Ordenes, etc. Se
representan por Estructuras
Eugenio Kolb 4
Entrada de
Datos
Proceso
Salida de
Resultados
Programacin
"structuras
Las estructuras sencillas o simples describen una sucesin de Acciones Simples (A1, A2,
...). (or e"emplo/ 4leer datos$ mostrar resultados$ ingresar un dato$ 4realizar un clculo directo$
etc. Esta Accin en general se puede describir en una sola lnea de programa, pero no necesa-
riamente. Se establece como norma usar el "= para separar una Accin de la siguiente (pudiendo
una instruccin ocupar ms de una lnea, o pudiendo haber ms de una instruccin por lnea).
Estas Estructuras se definen como de Secuenciacin.
En las estructuras compuestas, se contemplan los casos en que la ejecucin sucesiva de
las acciones A1; A2; A3; A4;.....,etc. (en ese orden y una vez cada una), se altera. En general se
contemplan 2 casos:
a) Cuando el orden de la secuencia de realizacin de las Acciones puede alterarse. (or
e"emplo: "Si se cumple una Condici'n dada, realizar A2; A3; A6; pero en caso contrario realizar
A5; A6;. Se denominan Estructuras de Seleccin (encontrndose muchos sinnimos: 5ransferen-
cia Condicional$ Control de Flu"o, etc.).
b) Cuando una sucesin de una o ms Acciones puede realizarse un nmero de veces dis-
tinto a uno (o, incluso, puede no realizarse), dependiendo de una condicin explicitada en el pro-
grama. )"emplo: "realizar tal secuencia mientras esta condicin se cumpla, "repetir tales acciones
hasta que una dada condicin deje de cumplirse, "repetir esta secuencia n veces. Se llaman es-
tructuras de teracin, encontrndose en la bibliografa diversos otros trminos: ciclos$ !ucles$
procesos repetiti#os, etc.
En el Cuadro , se resumen los 3 tipos globales de estructuras de Programacin en Seudo
Cdigo, con sus distintas variantes. En el Cuadro ,,, la traduccin de las mismas a Lenguaje
MatLab.
.
Eugenio Kolb 5
Cuadro 1
Estructuras de Secuenciacin (las A1,
A2, ...Ai; son comandos o instrucciones simples):
Al; A2; A3;
o
A1;
A2;
A3;
Estructuras de Seleccin : (las A1,
A2, ...Ai; son comandos o instrucciones simples,
o conuntos de ellos):
SI condici!n ENTONCES
Al;
SINO
A2;
FIN SI
Variantes:
SI condici!n ENTONCES
Al;
FIN SI
o
SEGN e"p
conunto de #alores1$ Al;
conunto de #alores2$ A2;

conunto de #aloresn$ An;


SINO
$ An%1;
FIN SEGN
Estructuras de Iteracin: (las A1,
A2, ...Ai; son comandos o instrucciones simples,
o conuntos de ellos):
MIENT!S condici!n "!CE
Al;
FIN MIENT!S
A este tipo de iteraci!n se la conoce como bucle
tipo Mientras
Variantes:
& Iteracin Condicional
Se la conoce como 'ucle tipo "asta$
EPETI
Al;
"!ST! #$E condici!n;
(ue e(ui#ale a$
Al;
MIENT!S NO condici!n "!CE
Al;
FIN MIENT!S
& Iteracin No Condicional (tipo FO%%%NE&T )
"!CE n VECES (para i de 1 a n)
Al;
FIN "!CE
(ue e(ui#ale a$
i 1;
MIENT!S i ) n "!CE
Al;
i i%1;
FIN MIENT!S
Estructuras de Entrada de 'atos$ los datos se
almacenan en Variables, permaneciendo en la
memoria
& !signacin directa$ los datos,
num*ricos, l!+icos o al,anum*ricos, pueden ser
#alores o e"presiones
(aria)le expresin
& Ingreso *or teclado$ los datos se
ingresan durante la eecuci!n del pro+rama, tras
una pausa.
(aria)le INGES!+,Mensaje-
& .ectura desde un arc/i(o$ los datos se
leen de un arc-i#o e"terno al pro+rama, . se u'ican
en #aria'les.
.EE (aria)le0s
Estructuras de Salida de esultados$
permiten #er, imprimir, o +ra'ar en arc-i#os, los
resultados o'tenidos de c/lculos.
& 0m*resin $ salida por pantalla o
impresora de mensaes . resultados.
ESCI1I +,mensaes12 #aria'les-
& Visuali3acin$ salida por pantalla de
mensaes . resultados.
MOST! +2mensaes1; #aria'les-
& Gra)acin$ +ra'aci!n de resultados en
un arc-i#o e"terno al pro+rama
G!1! #aria'le3s
Programacin
Cuadro 1 Cuadro 1
Eugenio Kolb 7
Estructuras de 1ecuenciacin
A signacin >
variable ? expresin/conj. de datos;
Ingreso por teclado>
variable=input('mensaje' [,'s']);
4ectura de arc@i(o>
load archivo[, variable/s];
Impresin> (en pantalla, en archivo, en
impresora,etc.)
fprintf([destino,]formato/mensaje[,
variables]);
AisualiBacin (de una variable, sin el nombre):
disp(variable);
/rabacin>
sa(e archivo[, variable/s];
Estructuras de 1eleccin
if condicin
A1;
else
A2;
end
if condicin
A1;
end
if condicin1
A1;
elseif condicin2
A2;
else
A3;
end
sCitc@ expresin
case expresion1
A1;
case expresion2
A2;
case {expresion3, expresion4,
..}
A3;
.......
ot@erCise
An+1;
end
,nstrucciones complementarias/
try .... catc@ .. end : permiten gestionar
errores. Se ejecuta el con"unto de
instrucciones1, y solo en el caso en que
ocurra un error, pasa a ejecutarse el
con"unto de instrucciones6.
try
A1;
catc@
A2;
end
Estructuras de Iteracin
C@ile condicin
A1;
end
for variable=Valornicial:ncremento:ValorFinal
A1;
end
,nstrucciones complementarias/
breaD: traslada la ejecucin a la lnea siguiente a
donde est el final del bucle mas interno (sale del bucle).
continue: traslada la ejecucin a la lnea donde est
el final del bucle mas interno (no sale del bucle)
Cuadro 4
Programacin
Arc@i(os de 3atos y Aariables
Arc@i(os
Los datos se almacenan, en la Memoria Auxiliar, en Arc3i#os de &atos. Se ubican en
Campos cuyos agrupamientos se denominan 7egistros. As, el Registro de una persona estar
compuesto por los Campos nom!re$ edad$ sexo$ domicilio, etc.
En general, la manera de almacenar la informacin origina 2 tipos de Archivos:
a) Arc@i(os 1ecuenciales: en los cuales el almacenamiento de la informacin se
realiza de la siguiente manera: campo 1$ separador$ campo 6$ separador$ campo 8$ separador$ ... . Para usar
la estructura LEER, se usan tantas #aria!les como campos compongan el registro:
4EE- #aria!le 1$ #aria!le 6$ #aria!le 8
Al realizarse la primera accin de Lectura dentro de un programa, un puntero
interno toma los 3 primeros datos (en este caso), los asigna a las 3 #aria!les, y se posiciona en el
cuarto, esperando cualquier siguiente lectura. Y as, sucesivamente.
La instruccin opuesta se escribe, tambin, conociendo la estructura del archivo:
/-ABA- #aria!le 1$ #aria!le 6$ #aria!le 8
Esta accin agrega un nuevo registro de 3 campos
En general, al final del archivo, puede colocarse un seudo registro, explicitando ese
final. Por ejemplo: 9$ Fin$ 9. De esa manera, se podr usar la estructura )IE$2-A1
para ...LEER ...MENTRAS .... #aria!le 1 ...sea distinta de 0.
Las ventajas de este tipo de archivos son, bsicamente, las siguientes: a) Ocupan
menor espacio; b) Se pueden procesar archivos de cualquier origen (tal vez con miles o millones
de registros), usando un dado Lenguaje compilable; .... tomando la precaucin de establecer los
separadores de datos establecidos por dicho Lenguaje.
La principal desventaja es la siguiente: para acceder a un Registro dado, se de!en
leer antes todos los anteriores.
b) Arc@i(os de Acceso 3irecto: en los cuales cada Campo tiene una longitud fija.
Por lo tanto, cada Registro tendr una longitud fija. Exigen de una etapa de diseo previo, usando
las herramientas propias del Lenguaje utilizado.
La principal ventaja es la siguiente: el acceso directo a un determinado registro
(tanto para Lectura como para Grabacin. Tendramos, ahora, la siguiente representacin:
4EE- :; de 7egistro$ #aria!le 1$ #aria!le 6$ #aria!le 8
/-ABA- :; de 7egistro$ #aria!le 1$ #aria!le 6$ #aria!le 8
En algn momento (cuando la capacidad de almacenamiento era muy escasa),
podra hablarse de la ahora relativa desventaja de no utilizar todos los !-tes disponi!les. Hoy, las
Bases de Datos se desarrollan usando el criterio del acceso directo. Si se trata de disear y
administrar bases de datos, se utilizan este tipo de archivos. Adems, resultan muy prcticos:
"gra!ar en la posici'n tal$ los siguientes datos.
Sin embargo, no debemos olvidar un hecho: por distintas vas y medios se
obtienen Datos (con cualquier formato), separados por un separador dado. Pueden ser archivos
conteniendo miles o millones de registros. Reemplazando los separadores de datos se puede
procesar ese conjunto de informacin, considerndolo como un Archivo de Acceso Secuencial.
Algo imposible de realizar de otra manera.
Bases de 3atos
Eugenio Kolb 8
Programacin
Los archivos de los tipos citados anteriormente se organizan, en general, en estructuras
mayores. Sintticamente, las mismas se organizan en una o ms 5a!las (equivalentes a
aquellos): Esas organizaciones de la informacin se denominan .ases de &atos. Cada 5a!la est
compuesta por 7egistros +47ecords) - Campos +4Fields). El siguiente es un simple ejemplo de
una Tabla simple:
5a!la: Tabla1
Campo 1 Campo 6 Campo 8 Campo <
$ombre Apellido !odigode!arrera 1e"o
7egistro 1
Jose Perez 501 M
7egistro 6
Ana Maria Garcia 503 F
7egistro 8
Rosa Ayala 501 F
7egistro <
Pedro Pereira 502 M
Si considerramos otra Tabla (Tabla2), ya se podra hablar de una Base de Datos. Como
ejemplo, podramos hablar de un Libro de Hojas de Clculos, con 2 Hojas.
!odigo!arrera !arrera
501 ngeniera Qumica
502 Bioqumica
503 Gentica
Existen Lenguajes orientados al manejo de Bases de Datos, tales como el Lenguaje
Estructurado de Consultas (SQL), que permiten generar "5a!las =irtuales en el procesamiento de
los datos. Por ejemplo:
SELECCONAR :om!re$ Apellido$ Carrera DESDE 5a!la1$ 5a!la6 DONDE
CodigodeCarrera>CodigoCarrera Y Sexo>?
.... genera una 5a!la =irtual:
$ombre Apellido !arrera
Jose Perez ngeniera Qumica
Pedro Pereira Bioqumica
Aariables
Los datos se almacenan, en la Memoria Principal, en variables. En general, se pueden
clasificar en 2 grandes grupos: num'ricas y alfanum'ricas ("strings o cadenas de caracteres).
Pueden ser simples (escalares: almacenan un solo dato en un momento dado), o
m(ltiples (#ectores o matrices: los datos se distribuyen en filas, columnas, capas, etc.).
As: en A 5, se asigna un dato a un escalar. En A(3) 5 se asigna el dato a un vector
(variable de una dimensin). Con A(3,4) 5 el dato se ubica en una matriz (variable de 2
dimensiones), y as sucesivamente:
!
5
! !
5 5
Eugenio Kolb 9
Programacin
En el caso del vector y la matriz, se utiliz el criterio de asignarle el valor 1 a las primeras
columnas y filas. Es frecuente el uso del subndice 0 para las mismas.
Distintos Lenguajes permiten definir tipos personali$ados de variables. As, se puede
definir una variable llamada fic3a que contenga los datos nom!re, edad, sexo, categora.
Entonces, en fic3a+8).edad estara la edad del 4 empleado.
Cuando las variables son numricas, se las puede sub-clasificar: enteras$ de precisi'n
simple$ de precisi'n do!le, etc.
1ubprogramas y unciones
Cuando se tiene un conjunto de acciones de uso general y frecuente, se las puede
organizar como procedimientos parametri$ados:
a) como Subprogramas) o Subrutinas o #rocedimientos*,
b) como Funciones.
Se almacenan con nombre propio como parte del programa, o como archivos
independientes. Son convocados estos procedimientos cada vez que se necesita ejecutar ese
conjunto de instrucciones: ya sea desde el programa o trabajando en modo de comandos.
Se puede decir que la principal diferencia es que en el caso de las funciones se obtiene
uno o ms valores de retorno, a partir de uno o ms parmetros enviados o tomados del Sistema.
Algo que no ocurre, en principio, en los subprogramas (aunque dentro de los stos se pueden
utilizar variables globales que mantienen su valor una vez finalizada la ejecucin del
subprograma).
#ara llamar a un Subprograma se usa una instruccin completa+ #ara llamar a una
Funcin, se usa parte de una e,presin.
En general, podemos escribir ambos tipos de procedimientos de la siguiente manera:
Subprograma
1'BP-./-A)A nombre(#aria!les@argumentos de )ntrada)
A1;
A2;
.....
I$ 1'BP-./-A)A
Funcin
'$!I0$ #aria!le@s de salida nombre (#aria!les@argumentos de )ntrada)
A1;
A2;
.....
I$ '$!I0$
)"emplo: se desea automatizar la determinacin del mximo de 2 nmeros (en el caso de
que sean iguales, ese ser el mximo). Programar la secuencia de acciones en un Procedimiento
llamado ma,imo-, que lleve a la resolucin del problema.
a) Asando Subprogramas
1'BP-./-A)A ma,imo-(a,b)
Eugenio Kolb 10
Programacin
1I a =>b E$2.$!E1
m a;
1I$.
m b;
I$ 1I
).12-A-("Maximo: ", m)
I$ 1'BP-./-A)A
b) Asando Funciones
'$!I0$ m ma,imo-(a,b)
1I a =>b E$2.$!E1
m a;
1I$.
m b;
I$ 1I
I$ '$!I0$
$ota 5: en ambos casos, se puede invocar al procedimiento maximo6 desde cualquier
parte del programa, o desde el modo de comandos.
En el caso a) se escribira de alguna de las siguientes formas (como instrucci'n completa o
como comando):
maximo2(5,7);
maximo2(z,w);
etc.
En el caso b) se escribira de alguna de las siguientes formas (como parte de una
instruccin o comando):
t maximo2(5,7);
).12-A- maximo2(z,w);
u maximo2(o,p)*1,2 5
etc.
Ntese que el Subprograma realiza un conjunto de acciones a partir (o no) de datos
enviados, pero no se obtienen .alores de retorno . Se logra la simple visualizacin del mximo
de 2 nmeros
Sin embargo, la Funcin retorna el valor del mximo, el cual puede ser asignado a una
variable, mostrado, utilizado como parte de una expresin de clculo, etc.
$ota *: en ambos casos, las variables a# b y m tienen 4#ida solo durante el transcurso del
Procedimiento (Subprograma o Funcin). Luego, "de"an de existir. Esto suele producir confusin.
Para mejor comprensin:
1) Al escribir la Funcin o Subprograma, se usan #aria!les o expresiones
("#aria!les@argumentos de )ntrada), en el encabezado, que indican la cantidad ! tipo de datos
necesarios para resol.er las acciones siguientes. Estas acciones llevan, a su vez, a resultados
directos en el caso de los Subprogramas (impresin de un logotipo, reordenamiento y
actualizacin de una base de datos, etc.). O, en las Funciones, a la obtencin de uno o ms
resultados surgidos de comparaciones, clculos, etc.; explicitados en el encabezado ("#aria!les
de Salida 4)$ las %ue indican cantidad ! tipo de resultados
Eugenio Kolb 11
Programacin
2) Una vez escrita la Funcin, no nos interesan los nombres de las .ariables
internas /ue se utili$aron, sino el orden, cantidad y tipo de datos a enviar a la misma; y el orden,
cantidad y tipo de resultados que obtenemos.
$ota 8> Queda un caso intermedio, sin embargo. En el caso a), si la variable m estuviese
declarada como Global, ese valor sigue vigente (4no muere), y puede ser usado luego, tal como
lo hicimos en el caso b).
E6emplos de utiliBacin de 1eudo !digo
1) Se desea disear un algoritmo que permita, ingresando el Sueldo y la Categora de
un Empleado, mostrar el Nuevo Sueldo. Los empleados pueden tener categoras 1 a 20. Los
casos a resolver son los siguientes:
a) Los empleados con categoras menores a 10 reciben un incremento del 20 %, y el
resto no recibe incremento alguno.
') Los empleados con categoras menores a 10, reciben un incremento del 30 %, y el
resto uno de 20 %.
c) Los empleados reciben un incremento distinto segn sus categoras: 20 % para las
categoras 1 a 5, 15 % para las 6 a 10, 10 % para las 11 a 15, y 5 % para las 16 a 20.
2) Ampliar el problema anterior, punto c, permitiendo el ingreso de varios registros, sin
necesidad de volver a ejecutar el programa
sueldo INGES!(40n+rese Sueldo (para ,inali5ar in+rese 6)4);
MIENT!S 78 sueldo96 "!CE
:ate+oria 07;RESAR(0n+rese :ate+oria<);
Eugenio Kolb 12
a)
sueldo INGES!(40n+rese Sueldo 4);
cate+oria INGES!(0n+rese :ate+oria<);
SI cate+oria)16 ENTONCES
sueldo sueldo&1.2;
FIN SI
MOST!(4El nue#o sueldo es$<, sueldo)
')
sueldo INGES!(40n+rese Sueldo 4);
cate+oria INGES!(0n+rese :ate+oria<);
SI cate+oria)16 ENTONCES
sueldo sueldo&1.3;
SINO
sueldo sueldo&1.2;
FIN SI
MOST!(4El nue#o sueldo es$<, sueldo)
c)
sueldo INGES!(40n+rese Sueldo 4);
cate+oria INGES!(0n+rese :ate+oria<);
SEGN cate+oria
1)9cate+oria)9= $ sueldo sueldo&1,2;
>)9cate+oria)916 $ sueldo sueldo&1,1=;
11)9cate+oria)91= $ sueldo sueldo&1,1;
1>)9cate+oria)926 $ sueldo sueldo&1,6=;
SINO
MOST!(4?a cate+oria no es correcta<);
FIN SEGN
MOST!(4El nue#o sueldo es$<, sueldo)
Programacin
SEGN cate+oria
1)9cate+oria)9= $ sueldo sueldo&1,2;
>)9cate+oria)916 $ sueldo sueldo&1,1=;
11)9cate+oria)91= $ sueldo sueldo&1,1;
1>)9cate+oria)926 $ sueldo sueldo&1,6=;
SINO
MOST!(4?a cate+oria no es correcta<);
FIN SINO
Sueldo INGES!(40n+rese Sueldo (para ,inali5ar in+rese 6)4);
FIN MIENT!S
MOST!(4El nue#o sueldo es$<, sueldo)
$ota: en los programas anteriores, de ingresarse una categora incorrecta, si bien se visualiza el mensaje
correspondiente, tambin se visualiza "El nuevo sueldo es:.... Agregar las lneas necesarias para solucionarlo.
3) Se busca desarrollar un Algoritmo para estudiar de manera estadstica el historial de una
mesa de ruletas.
Un archivo contiene una cantidad indeterminada de valores enteros entre 0 y 36, correspondientes
a una serie de jugadas. ndicando el final del archivo, se encuentra el nmero 1. Desarrollar un
Algoritmo que permita leer y mostrar los datos. Adems, el programa deber mostrar al final el
siguiente resumen:
a) N de valores
b) N de valores correspondientes a la primera docena,
c) N de valores correspondientes a la segunda docena
d) N de valores correspondientes a la tercera docena
e) N de veces en que se registr el 0.
6 ; c1 6 ; c2 6; c3 6; c 6;
.EE #alor;
MIENT!S 78 #alor 9 @1 "!CE
c c % 1;
SEGN #alor
6 $ c6 c6 % 1;
1 a 12 $ c1 c1 % 1;
13 a 2A $ c2 c2 % 1;
2= a 3> $ c3 c3 % 1;
FIN SEGN
.EE #alor;
FIN MIENT!S
MOST!(4Botal de #alores anali5ados$ 4, c);
MOST!(4Botal de #alores de la 1C, docena$ 4, c1);
MOST!(4Botal de #alores de la 2C, docena$ 4, c2);
MOST!(4Botal de #alores de la 3C, docena$ 4, c3);
MOST!(4Botal de #alores i+uales a 6$ 4, c6);
4) A partir del archivo del ejemplo anterior, se desea conocer la cantidad de ocurrencias de
cada uno de los nmeros, de 0 a 36:
P!! i de 6 a 78
c(i)96
FIN P!!
.EE #alor;
MIENT!S 78 #alor 9 @1 "!CE
c(#alor) c(#alor) % 1;
.EE #alor;
FIN MIENT!S
P!! i de 6 a 78
Eugenio Kolb 13
Programacin
MOST!(4El nDmero 4, i , 4 sali! 4, c(i) , 4 #eces<);
FIN P!!
5) Desarrollar un Algoritmo que permita a un operador ingresar una cantidad indeterminada
de valores positivos mayores que 0. Al final del mismo, se deber mostrar el siguiente resumen:
a) N de valores ingresados
b) Valor y posicin del mximo
c) Valor y posicin del mnimo
c 6
n INGES!(40n+rese #alor (para ,inali5ar 9 6);
ma"imo n;
minimo n;
MIENT!S n)E6 "!CE
c c % 1;
SI nEma"imo ENTONCES
ma"imo n;
posma"imo c;
FIN SI
SI n)minimo ENTONCES
minimo n;
posminimo c;
FIN SI
INGES!(40n+rese #alor (para ,inali5ar 9 6);
FIN MIENT!S
SI cE6 ENTONCES
MOST!(7F de datos in+resados$ 4, c);
MOST!(4El m/"imo es$<,ma"imo);
MOST!(4Posici!n del m/"imo$ <,posma"imo);
MOST!(4El m/"imo es$<,ma"imo);
MOST!(4El mGnimo es$<, minimo);
MOST!(4Posici!n del mGnimo$<, posminimo);
SINO
MOST!(47o se in+resaron #alores<);
FIN SI
Eugenio Kolb 14
Programacin
Parte II
)at4ab
I& Introduccin
El Matlab permite trabajar escribiendo poderosos comandos o funciones de manera directa
en la ventana de comandos, que se ejecutan inmediatamente. En este caso, mientras dura la
sesin, cada variable utilizada mantiene los datos en la memoria. Por otra parte, se pueden crear
programas o secuencias de comandos, o programar funciones de usuario (en ambos casos,
archivos con extensin .m). stos, ubicados en las carpetas de bsqueda del MatLab, pasan a
ampliar el conjunto de herramientas de clculo.
Si bien se pueden desarrollar poderosos programas usando su lenguaje propio, MatLab
permite, a alumnos, docentes e investigadores con pocos conocimientos en informtica, realizar
clculos de distinto tipo usando las poderosas herramientas de este entorno.
Estos apuntes pretenden guiar, en primer lugar, a la utilizacin directa de los recursos
disponibles. En segundo lugar, a resumir las herramientas de programacin. Hemos planteado
cada uno de los ejemplos, los hemos verificado con MatLab, y los ofrecemos como elemento
complementario a manuales, libros y monografas sobre este tema.
II& Entorno de traba6o
Al ingresar a Matlab, con la opcin del men 0ie1, se pueden seleccionar las ventanas que
permanecern visibles hasta que se diga lo contrario:
a) Aentana de !omandos (Command Bindo2): donde, al lado de la peticin de orden se
escriben los comandos, de ejecucin inmediata. En todo momento, se puede acceder al
manual de ayuda escribiendo 2elp (ayuda rpida en modo texto), o 2elp1in (ms lenta,
pero con formato Windows, con hipervnculos, etc.). La ayuda sobre un comando dado se
obtiene con @elp comando o @elpCin comando.
') Launc2 #ad : presenta los mdulos y componentes de Matlab actualmente instalados
(Help, Demos, etc.)
c) Espacio de 2raba6o (BorCspace): presenta un listado de todas las variables definidas en
la sesin. Con =ie2@BorCspace =ie2 Dptiones se elige la manera de ver esa informacin.
d) Command 3istor! : muestra los ltimos comandos ejecutados en la Ventana de
Comandos. Cualquiera de ellos se puede volver a ejecutar con do!le clicC. Con el botn
derecho aparece un men contextual con las opciones disponibles.
e) 3irectorio Actual +Current &irector-): Permite establecer el Directorio Actual (donde se
grabar automticamente un archivo .m, por ejemplo). Con =ie2@Current &irector- Filter se
establece el tipo de archivos que se ver en el listado. Haciendo do!le clicC sobre un
archivo .m, se lo abre.
Debe diferenciarse del Searc2 #at2 (camino de bsqueda, establecido con File@Set (at3),
que adems del Directorio Actual incluye una serie de directorios y subdirectorios, y donde
Matlab buscar cualquier componente que deba ser ledo o ejecutado).
Eugenio Kolb 15
Programacin
Por otra parte, se activan otras ventanas, en el momento en que se las necesite:
,) Aentana de Edicin y E6ecucin de Programas )atlab (archivos .m). Al ejecutar
File4Ne1, o File4Load y seleccionar arc2i.os +m, se entra a la ventana que permite crear,
ejecutar, corregir y grabar programas de Matlab La escritura de las lneas de comandos
sigue las mismas reglas que las usadas al trabajar en modo Directo, en la ventana de
Comandos.
+) Aentana de AisualiBacin y Edicin de /rficos (archivos .fig). En esta ventana se
trazan las grficas obtenidas con comandos ejecutados directamente desde la Ventana de
Comandos, o por medio de la ejecucin de un archivo .m. Por otra parte, permite su
edicin, agregado de elementos de dibujo (lneas, flechas, texto), rotacin de el/los grficos
(hasta 4), etc.
Arc@i(os de !onfiguracin# Autoe6ecutables y 2emporarios
Al establecer un Searc3 (at3 por defecto, el mismo queda registrado en el archivo
tool!ox Elocal Ematlabrc+m. En cualquier momento, al invocar a una funcin o programa (archivos
.m), la bsqueda se realiza en dichas carpetas.
Al iniciar Matlab, el programa determina si existe en esas carpetas un programa llamado
startup+m. Si es as, lo ejecuta.
Para salir de Matlab, se ejecuta el comando 7uit. En ese momento, si existe en el Searc3
(at3 un archivo llamado finis2+m, Matlab lo ejecuta.
Al ingresar a Matlab, se inicia una Sesi'n de 5ra!a"o. Con el comando sa(e, en el directorio
actual se crea un archivo !inario llamado matlab.mat, con el estado de la sesin en ese momento
fundamentalmente las variables usadas hasta el momento, que aparecen en la ventana
Workspace (excepto las grficas, que por su tamao deben guardarse aparte). Con load se
recupera ese archivo.
Con sa(e nombredearc2i.o, se guarda con otro nombre, pero con todas las variables. Con
sa(e nombredearc2i.o , ! $, se guardan solo las variables especificadas.
Con la opcin sa(e nombredearc2i.o 5ascii, se guarda en formato ASC la informacin,
con 8 dgitos, pero no los nombres de las variables: se lee con load nombredearc2i.o 5ascii,
almacenndose toda la informaci'n en una sola #aria!le con el mismo nom!re %ue el arc3i#o
+error$ si no todas las filas tienen el mismo n1mero de elementos). Con la opcin sa(e
nombredearc2i.o 5ascii 5double 5tab$ los valores se almacenan con 16 dgitos, separados por
Tabuladores.
Con la opcin 5append, se agrega la informacin a un archivo ya existente.
Con load, usando las opciones -ascii y -mat, se obliga a leer el archivo con esos formatos
(ascii y binario).
!omandos:
6enerales >
demo: programa de demostracin MatLab Expo
@elp: manual de ayuda (Eelp Comando, para un comando dado)
control F !: para abortar un programa
De "ntorno de 7rabajo >
clear: borra todas las Variables de la memoria
Eugenio Kolb 16
Programacin
C@o: lista las matrices definidas
C@os: lista las matrices definidas y sus tamaos
3e AisualiBacin>
clc: borra la Ventana de Comandos.
clf: borra la Ventana de Grficos.
A!uda de MatLab
En la Ventana de Comandos, se puede obtener informacin escribiendo Eelp (para ver
ayuda en formato texto en la misma Ventana), o EelpCin (para ejecutar el Asistente, que permite
vnculos a herramientas relacionadas).
MatLab presenta el ingreso a loa distintos temas con el siguiente men (accesible con @elp o
@elpCin). Si se desea ingresar directamente a un tema, se escribe EelpCin .8nculo/
=nculo 2ema
matla!Egeneral Comandos de Propsito General
matla!Eops Operadores y Caracteres Especiales
matla!Elang Lenguaje de Programacin MatLab
matla!Eelmat Matrices elementales y manipulacin de matrices
matla!Eelfun Funciones matemticas elementales
matla!Especfun Funciones matemticas especializadas
matla!Ematfun Funciones Matriciales: lgebra Lineal Numrica
matla!Edatafun Anlisis de Datos y Transformadas de Fourier
matla!Eaudio Soporte de Audio
matla!Epol-fun Polinomios e nterpolacin
matla!Efunfun Funciones de Funciones y Resolucin de Ecuaciones Diferenciales Ordinarias
(ODE).
matla!Esparfun Matrices Dispersas (Sparse matrices).
matla!Egrap36d Grficos de 2 Dimensiones
matla!Egrap38d Grficos de 3 Dimensiones
matla!Especgrap3 Grficos Especiales
matla!Egrap3ics Manejo de Grficos
matla!Euitools Herramientas grficas de interface de usuario.
matla!Estrfun Cadenas de caracteres
matla!Eiofun nput/output de Archivos
matla!Etimefun Fechas y Horas.
matla!Edatat-pes Tipos y Estructura de Datos
matla!E#erctrl =ersion control.
matla!E2infun Archivos de nterface Windows (&&)@Acti#eF)
matlab9demos Ejemplos y Demostraciones.
tool!oxElocal Preferencias.
tool!oxEcompiler MATLAB Compiler
?A5LA.E2orC
ormatos de ic@eros. %matlab\iofun\fileformats.m)
Formatos de 5exto
!omando -etorno
MAT Espacio de Trabajo MATLAB load Variables en archivos.
CSV Nmeros separados por comas cs(read Arreglo doble
DLM Texto delimitado dlmread Arreglo doble
TAB Texto separado por tabuladores dlmread Arreglo doble.

Eugenio Kolb 17
Programacin
Formatos de Go"as de Clculos
!omando -etorno
XLS Excel "lsread Arreglo doble y arreglo de celdas.
WK1 Lotus 123 CD5read Arreglo doble y arreglo de celdas..
Formato de Animaciones
!omando -etorno
AV Movie a(iread Animacin MatLab.

Formatos de ,mgenes
!omando -etorno
TFF TFF imagen imread mgenes de color verdadero, escala de grises o indexadas
PNG PNG imagen imread mgenes de color verdadero, escala de grises o indexadas
HDF HDF imagen imread mgenes de color verdadero o indexadas
BMP BMP imagen imread mgenes de color verdadero o indexadas.
JPEG JPEG imagen imread mgenes de color verdadero o escala de grises.
GF GF imagen imread mgenes inexadas
PCX PCX imagen imread mgenes inexadas
XWD XWD imagen imread mgenes inexadas
CUR Cursor imagen imread mgenes inexadas
CO con imagen imread mgenes inexadas
Arc3i#os de sonido
!omando -etorno
AU NeXT/Sun sound auread Sound data and sample rate
WAV Microsoft Wave sound wavread Sound data and sample rate
III& Aariables y 3atos en )at4ab
Conceptualmente, todas las variables son matrices, incluso si contienen un solo dato
(escalar).
Los nombres de las funciones y variables de!en comenzar con una letra. MatLab recuerda
los primeros 1H caracteres. Las funciones van en minsculas (aunque el comando casesen
permite una am!i#alencia). La forma general de asignacin de datos es la siguiente:
variable=expresi'n
Si se escribe solo expresi'n, la misma se almacena en la variable ans
Escalar: [3.5] Matriz de una fila y una columna
Vector: [1,5,3,1] Matriz de una fila y varias columnas (vector fila)
Matriz: [3.5, 3.1;2,1.5] Matriz de 2 filas y 2 columnas
El resultado de la 1ltima operaci'n se almacena, por defecto, en la variable ans.
Asignacin de 3atos
Eugenio Kolb 18
3.5
1 5 3 1
3.5 3.1
2 1.5
Programacin
a) 4istas e"plcitas /
Para ingresar un escalar, la asignacin se hace directamente: a = 14, n = 'Posadas'. Sin
embargo, MatLab permite ingresar mltiples datos en una sola lnea, entre corc3etes:
)"emplo/ A>I1 6 8J< K LJM N HO

Separadores de Columnas: # (coma), o espacio en !lanco
Separadores de Filas/ = (punto - coma), o retorno de carro
Al dar entrada a la lnea de asignacin, se imprimen los valores, salvo que se finalice con = .
5oda lnea %ue termina con ,+++ +una coma - 8 puntos)$ contin1a en la siguiente.
b) .perador de - puntos %>& : permite crear matrices nuevas.
Crear =ectores a partir de una ?atriz : al hacer referencia a toda una fila o toda una
columna.:
C = [-
1,0,0;1,1,0;1,-1,0;0,0,2];
X = C(>,2);
Generacin de Matrices nuevas conteniendo Series : para generar automticamente los
valores desde un #alor inicial$ con un incremento +por defecto$1)$ 3asta un #alor final.:
X = 1>8;
X = 1>0.5>4.5
c) 1ub9)atrices: a partir de una Matriz A existente, generar una nueva, B, utilizando un
Rango de A. As, B ? A%i>6#D>m& asigna a B los valores de A comprendidos entre las Filas i y 6, y
las Columnas D y m.
Ejemplos:
A%8#>& La tercera fila y todas las columnas
Eugenio Kolb 19
1 2 3
4 5 6
7 8 9
-1 0 0
1 1 0
1 -1 0
0 0 2
0
1
-1
0
1 2 3 4 5 6 7 8
1 1.5 2 2.5 3 3.5 4 4.5
@1
1
1
6
D9:($)
6
1
@1
6
6
6
6
2
Programacin
A%>#*>8& Todas las filas, entre las columnas 2 y 3
d) .tras automatiBaciones:
?atriz #aca : A ? G H
5ransposici'n de ?atrices (conversin de filas a columnas, y viceversa): B ? AI
?atriz con Ceros/ B ? Beros%8#*&
?atriz con Anos/ B ? ones%8#*&
?atriz ,dentidad/ con 5 en la diagonal y + en las otras posiciones. )"emplos:
A = eye(3) A = eye(3,2)
Nota: para conocer el Tamao de una matriz , se usa el comando siBe%A&. El tamao de un vector
se obtiene con lengt2)A*, equivalente a ma,)si$e)A**.
El decimal es el . (punto, no coma) . As, 2.5 + 3.9 lleva al resultado 6.4. Pero, si hacemos
2,5 + 3,9 los resultados son 2, 8 y 9.
.peradores )atemticos
C=A+B 1 4 6 C=A.*B 0 4 9
0 4 7 0 0 0
5 0 1 6 0 0
A = 1 2 3
0 4 0 C=A-B 1 0 0 C=A./B Warning: Divide by zero
2 0 1 0 4 -7 nf 1.0000 1.0000
-1 0 1 NaN nf 0
B = 0 2 3 0.6667 NaN nf
0 0 7
3 0 0 Nota& .* y ./ indica que las operaciones se realizan entre los
elementos de la matrices (escalares). Caso contrario,
usando solo * y /, tendremos una operacin entre matrices.
.peradores 4gicos: las 2 matrices deben ser de la misma dimensin o una debe
ser un escalar
JKJ
C=A&B 0 1 1 1's donde A y B (ambos) no son nulos# 0s el resto
0 0 0
1 0 0
J.J 1's donde A o B (aunque sea uno de ellos) no son nulos# 0s el
resto
C=A|B 1 1 1
Eugenio Kolb 20
1 6 6
6 1 6
6 6 1
1 6
6 1
6 6
Programacin
0 1 1
1 0 1
J$.J 1's donde A o B (aunque sea uno de ellos) no son no nulos, 0s
el resto
C=A~=B 1 0 0
0 1 1
1 0 1
.peraciones con )atrices
#roducto #unto >
a) )scalar %ue surge de sumar los productos de los #alores u!icados en posiciones
correspondientes de 6 #ectores:
C = A.B =

=
N
i
i i
b a
1
A = 4 -1 3 B = -2 5 2
C=dot(A,B) -7
(4x(-2) + (-1)x5 + 3x2)
!) =ector %ue surge de calcular el (roducto (unto de las Columnas de cada ?atriz/
A = 1 2 B = 5 6
3 4 7 8
C=dot(A,B) 26 44
(1x5 + 3x7 2x6 + 4x8)
es decir ( 26 44 )
)ultiplicacin de )atrices
C
i,j
=

=
N
k
j k k i
b a
1
, ,
A = 1 2 B = 5 6
3 4 7 8
C =A*B 19 22
43 50
Es decir (1*5 + 2*7 1*6 + 2*8)
(3x5 + 4x7 3x6 + 4x8)
(ara sa!er si existe C$ se pueden escri!ir los tama*os de A - . uno al lado del otro/ si los 6 #alores
interiores son iguales$ existe C$ con un tama*o definido por los #alores exteriores. As$ si tenemos A+6$8) -
.+8$8)/
2 x 3 3 x 3 C=A*B existe, y su tamao ser C(2,3)
Eugenio Kolb 21
Programacin
Potencias de )atrices
Debido a que el producto de 2 matrices es posible solo si la cantidad de filas de la primera
es igual a la cantidad de columnas de la segunda, y teniendo en cuenta que A
*
es A*A, A debe ser
cuadrada. Debe recordarse que si la expresin fuese A.
*
, estaramos hablando simplemente
sobre la elevacin al cuadrado de cada elemento escalar de la matriz.
unciones )atriciales
De utilidad en lgebra Lineal, existe una serie de funciones:
)atriB In(ersa
La in.ersa de una matriz cuadrada A es la matriz A
-1
para la cual los productos de
matrices A. A
-1
y A
-1
.A son iguales a la matriz identidad.
A = 2 1 B=A^(-1) 1.5000 -0.5000 A*(A^(-1) 1 0
4 3 -2.0000 1.0000 0 1
A - . son in#ersas una de la otra/ A>.
-1
- .>A
-1
$ - A.>.A.
Ana matriz 4singular o "mal condicionada, no tiene in#ersa. )ste concepto est
relacionadocon un sistema de ecuaciones %ue no son independientes entre s.
)l rango de una matriz es el n1mero de ecuaciones independientes representadas
por las filas de la matriz/ si el rango de una matriz es igual a su n1mero de filas$ 0sta no es
singular$ - existe su in#ersa.
Se usan 6 funciones/
@ ranD%A&> calcula el rango de la matriz
@ in(%A&> calcula el in#erso de la matriz
3atos AlfanumLricos
Las cadenas de caracteres se almacenan usando una columna por carcter, en una matriz. El
espacio en blanco es un carcter ms. La coma y el espacio en blanco siguen teniendo el mismo
significado (separador de columnas). El punto y coma separa filas.
)"emplos:
- a = 'Hola'
- a = ['Hola' , 'Buen da']
- a = ['Hola ' ; 'Buen da']
)n este 1ltimo caso$ am!as cadenas de!en tener la misma longitud +completando con
espacios en !lanco)$ -a %ue en caso contrario se produce un error. (ara %ue el rellenado sea
automtico$ se usa la funci'n c2ar/
- a =c@ar('Hola' ; 'Buen da')
Eugenio Kolb 22
H o l a
H o l a B u e n d a
H o l a
B u e n d i a
Programacin
IA& Estructuras de Programacin
A& Estructuras de 1ecuenciacin
a) Asignacin
variable ? datos/expresin
Como se ha establecido anteriormente, el MatLab permite automatizaciones
poderosas. En una sola lnea se pueden ingresar los datos de una matriz completa (entre
corchetes, con espacios o comas como separadores de columnas, y retornos de carro o puntos y
coma para separar filas). Adems, se pueden asignar series o rangos de otras variables con el
operador 2 puntos (>).
Complementando lo analizado en ):
Agregado datos a una matriB %matrices numLricas y alfanumLricas&
!aso 5: agregar filas y/o columnas a una matriz de nmeros
n=[1,2,3;4,5,6] -
a) m = [n ; [7,8,9]]
b) m= [n , [7,8]]
!aso *: agregar filas y/o columnas a una matriz alfanumrica. Conversin de datos.
Si a = ['Hola'] y b = [' Que tal'] - vectores fila de 4 y 8 datos.
z = [a,b] vector fila de 12 datos
z = [a;b] ....no se puede realizar!, por diferencias en las dimensiones
z = char(a,b) matriz de 2x8
Conversin de datos:
b = 1500 vector fila de un dato numrico
m = 'Colon ' o m = ['Colon '] vector fila de 6 datos
a) x = [m, num2str(b)] vector fila de 10 datos
b) x = char(m,num2str(b)) matriz de 2x6 datos
Funciones relacionadas:
Eugenio Kolb 23
1 2 3
4 5 6
1 2 3
4 5 6
7 8 9
1 2 3 7
4 5 6 8
Programacin
char(65) A
str2num('1000')/2 500
=er: hex2num, int2str, sprintf, dec2hex, bin2dec, dec2bin, str2double, etc, etc. (helpwin
matlab\strfun&
Dtros tipos de datos en ?atLa!
A) Arreglos de !eldas ("celds arrays): vectores o matrices cuyos elementos o datos (cada uno
de ellos), son a su vez variables de cualquier tipo.
c(1) = {[1,2;3,4]} en c(1) se carga una matriz numrica de 2x2
c(2) = {'Hola'} en c(2) se carga una matriz de 4 datos (caracteres).
c(3)={5} en c(3) se carga un escalar numrico
c(1) c(2) c(3)
B) Estructuras: agrupacin de datos de distinto tipo bajo un mismo nombre:
d(1) =struct('Nombre','Jose Perez','Sueldo',500) se crea la estructura:
Jose Perez 500
d(2).Categoria=12 se crea, modificando la estructura, un nuevo campo y se agrega
un registro.
Jose Perez 500
12
C) Eipermatrices: son matrices de 3 o ms dimensiones
b) AisualiBacin de 3atos
b-1) 'sando fprintf>
fprintf([destino,]formato/mensaje[, variables])
Nota: entre corchetes, la parte optativa. Por defecto, el destino es la pantalla. Puede ser, adems,
un archivo abierto con fopen.
Permite mostrar o imprimir exhibir tanto texto como valores . Los especificadores Me , Mf ,
y Mg indican cmo se vern los valores numricos : notaci'n exponencial$ notaci'n de punto fi"o o
decimal$ o el ms corto de los 6. Si se agrega Mn5.n*f podemos adems de definir el nmero de
dgitos enteros y decimales a visualizar. La cadena Nn indica hasta donde se visualizar la lnea: el
resto pasa a la siguiente lnea.
Si se hace I#aria!leO > sprintf+formato$ #aria!le@s), se obtiene el mismo resultado, pero
asignndolo a una variable.
)"emplo: (en la Ventana de Comandos):
Eugenio Kolb 24
1 2
H o l a 5
3 4
Se ingresa, asignndose los datos a la matriz x
Programacin
OO x=[2 5 ; 3.1 4.8]
x =
2.0000 5.0000
3.1000 4.8000
OO fprintf('Los valores de x son: %f , %1.3f y %2.2f , ademas de %1.2e \n',x)
Los valores de x son: 2.000000 , 3.100 y 5.00 , adems de 4.80e+000
:ota: observar que los datos se presentan o leen columna a columna, pese a "cargarse la matriz fila por
fila.
b-2) 'sando disp>
disp(variable/constante)
Muestra el valor de la cadena de caracteres, o de una variable, sin mostrar el nombre de la
misma. Se puede unificar varios datos y mostrar la cadena resultante:
>> a=2.4;b=8.6;c=a+b;
>> disp(['La suma es : ',num2str(c)])
La suma es : 11
b-3) 'sando formularios de interface grfica>
msgbo"%'Peticin', 'Ttulo', 'cono', 'Modo'&
cono: puede ser 'none' (ninguno, valor por defecto), 'error', 'help'
(a-uda), 'warn' (cuidado), o 'custom' (personalizado, en cuyo caso se
deben agregar argumentos).
Modo: puede ser 'modal' (obliga a contestar al cuadro), 'non-modal'
(valor por defecto),'replace' (siendo 'non-modal', este cuadro reemplaza a
otro con el mismo Ttulo).
Ejemplo:
>>msgbox('Presion superior a la maxima!', 'Calculo de la Temperatura', 'warn', 'non-modo')
c) Ingreso de 3atos por teclado
c-1) Usando input>
variable = input('Mensaje');
Produce una pausa, visualizndose el mensaje, y pudindose ingresar los datos con las
mismas reglas que en los casos de asignacin directa.
Eugenio Kolb 25
Se visualiza en pantalla, ya que no se puso =
al final de la lnea anterior
Se escribe
Se visualiza
Programacin
Ejemplo: (en la Ventana de Comandos):
>> Z=input('ngrese los Datos entre Corchetes:')
ngrese los Datos entre Corchetes: [1 2 ; 3 4]
1 2
3 4
Nota: Z=input('ngrese Dato:', 's '), hace que el dato asignado a Z sea considerado como
string o cadena de caracteres.
c-2) Usando inputdlg &
Variable=inputdlg(Peticion, 'Ttulo', Nmero de Lineas, Valores por
Defecto,Modo)
Variable=arreglo de celdas de una columna que recibir uno o ms datos de tipo texto
Peticion: vector columna con las peticiones de cada dato
Ttulo: ttulo del cuadro de dilogo
Nmero de Lneas: vector columna qur contiene el nmero de lneas reservadas para cada dato (por
defecto, 1), o matriz de 2 columnas, en donde en la 2 columna se pone la longitud en caracteres reservada
para cada dato
Valores por Defecto: valores por defecto para cada dato
Modo: 'on' (de tamao variable, no modal), o 'off' (modal).
)"emplo:
Peticion={'Nombre'; 'Edad'; 'Observaciones'}
NumerodeLineas=[1,45;1,8;3,45]
ValoresporDefecto={''; ''; 'Sin comentarios'}
Variable=inputdlg(Peticion, 'Ficha de Datos', NumerodeLineas, ValoresporDefecto, 'on')
c-3) Usando /uestdlg &
Opcion=7uestdlg('Peticion', 'Ttulo', 'Boton 1', 'Boton 2', ..., 'Boton n', 'Boton x')
Opcion: variable que recibe como dato 'Boton 1', 'Boton 2' o el que haya seleccionado el usuario,
para poder programar los siguientes pasos. 'Boton x' es el valor por defecto (si el usuario pulsa Enter).
)"emplo /
Eugenio Kolb 26
Haria'le 9
IJos* Pere5I Haria'le(1)
I31I Haria'le(1)
ISin comentariosI Haria'le(1)
Programacin
Opcion=7uestdlg('Ha ocurrido un error, qu desea hacer? ', ' Problemas !! ', 'Continuar', 'Cancelar',
'Reintentar', 'Cancelar')
switch Opcion,
case 'Continuar'
disp('Ud. decidi continuar')
case 'Cancelar'
disp('Ud. decidi cancelar')
case 'Reintentar'
disp('Ud. decidi reintentar')
otherwise
disp('No s qu decidi Ud. ')
end
d) 4ectura de Arc@i(o
load archivo, variables
En esta versin (simplificada), lee del archivo indicado, las variables grabadas con sa.e.
e) /rabacin en Arc@i(o
sa(e archivo, variables
Graba las variables especificadas en un archivo. Si no se especifican, graba todas las vigentes en
el espacio de tra!a"o.
-esumen de operaciones de 4ectura y /rabacin de datos en )atlab
cs(Crite +4commaPseparatedP#alues)/ graba en un archivo #alores separados por
comas. As, cs(Crite(NOMBREDEARCHVO,M) graba una matriz M en el archivo llamado
NOMBREDEARCHVO (por defecto, ubicado en c:\matlab\work), los datos num'ricos de una matriz
separados por comas. Las filas deben tener el mismo nmero de columnas.
M=[1 2 3; 4 5 6];csvwrite('datos1',M)
Con csvwrite(NOMBREDEARCHVO,M,f,c), se graba en la matriz que es el archivo, a partir
de la fila f y columna c del archivo (f - c empiezan a numerarse desde 9):
M=[1 2 3; 4 5 6];csvwrite('datos1',M,2,2)
cs(read: csvread(NOMBREDEARCHVO) lee de un archivo datos numricos separados por
comas. Con csvread(NOMBREDEARCHVO, f, c) se lee a partir de fila f y columna c.
)"emplo:
M=[1 2 3 4; 5 6 7 8; 9 10 11 12];csvwrite('datos1',M,1,1)
N= csvread('datos1',1,3)
dlmCrite: csvwrite(NOMBREDEARCHVO,M,DLM) graba el contenido de una matriz M en un
archivo con delimitadores (DLM). Para separar los datos con tabuladores, se usa '\t'
M=[1 2 3; 4 5 6];dlmwrite('datos2',M, '\t')
M=[1 2 3; 4 5 6];dlmwrite('datos4',M, '-')
Eugenio Kolb 27
,,,,
,,,,
,,1,2,3
,,A,=,>
1 2 3 A
= > K L
M 16 11 12
N
3 A
K L
11 12
7
Programacin
dlmread: permite leer un archivo grabado con dlm1rite
M=[1 2 3; 4 5 'u'];dlmwrite('datos4',M, '-')
N=dlmread('datos4','-')
"lsread: permite leer datos grabados en una hoja de Excel.
A = xlsread(Q:om!redeArc3i#oQ) devuelve los valores numricos de la primera hoja del libro.

[A, B] = xlsread(Q:om!redeArc3i#oQ$R:om!redeGo"aR) devuelve los datos numricos
almacenados en A y los alfanumricos en B

Las celdas vacas o con texto resultan en un elemento NaN ("no es un n1mero).
1a(e: graba las variables del Espacio de Trabajo al disco.
sa(e $ombredeArc@i(o: graba todas las variables a un archivo binario .mat (por defecto).
Se escribe con o sin comillas.
1a(e $ombredeArc@i(o P: graba solo X
1a(e $ombredeArc@i(o P Y Z: graba X, Y y Z. Se pueden usar caracteres "comodn ("*).
Opciones ASC:
:
sa(e ... A1!II: usa formato ASC de 8 dgitos en vez de binario.
sa(e ... A1!II3.'B4E: usa formato ASC de 16 dgitos.
sa(e ... A1!II2AB1: separa los datos con tabuladores.
sa(e ... A1!II93.'B4E2AB1 :formato de datos de 16 dgitos, separados por comas..

Opciones MAT:
sa(e ... APPE$3: agrega las variables a un archivo existente (solo archivos MAT).

Se puede usar la forma functional, tal como ('NombredeArchivo','var1','var2'), cuando el nombre
del archivos o las variables son almacenadas en strings.
Eugenio Kolb 28
Programacin
B& Estructuras de 1eleccin
7ransferencia Condicional Simple
a) !aso 5>
if condicin
.......A1; A2;....
else
.......A3; A4;....
end
b) !aso *>
If condicin1
.......A1; A2;....
elseif condicin2
.......A3; A4;....
else
.......A5; A6;....
end
Si se pregunta "si A>B y C=0, se
tienen en la condicin los 2 tipos de
operadores: los 7elacionales (Q , Q?, O, O?,
?? (igual), R? (distinto)), y los L'gicos (S
("y), T ("o) y R ("no)).
La condicin de if tambin puede ser
matricial, para 2 matrices del mismo tamao.
As: A==B exige que todos los elementos
sean iguales dos a dos (Aij=Bij), y A~=B
exige que todos sean distintos.
La funci'n ise7ual%A#B&, si las 2
matrices son iguales, devuelve un 1 si A y B
son idnticas, y 0 en caso contrario.
7ransferencia Condicional M(ltiple
c) !aso 8>
Segn expresi'n (un nmero escalar
o una cadena de caracteres), se ejecutan
distintos conjunto de instrucciones
sCitc@ expresin
case expresion1
.......A1; A2;....
case expresion2
.......A3; A4;....
case {expresion3, expresion4, ..}
.......A5; A6;....
ot@erCise
.......An; ....
end
d) !aso :> Gestin de Errores
Permiten gestionar errores. Se ejecuta el
con"unto de acciones A1J A6J ...etc.J y solo en
el caso en que ocurra un error, pasa a
ejecutarse el con"unto de acciones A8J A< .
try
.......A1; A2;....
catc@
.......A3; A4;....
end
)"emplos/
% Calculo de la temperatura de un reactor (caso
1)
% ------------------------------------------------
% T = PxV/1.7
% Condiciones: P no debe superar 5
clear;
clc;
P=input('ngrese Presion:');
V=input('ngrese Volumen:');
if P<=5
T=P*V/1.7;
fprintf('La Temperatura es: %g\n',T)
else
fprintf('Presion superior a la permitida\n')
end
% Calculo de la temperatura de un reactor (caso
2)
% ------------------------------------------------
% T = PxV/1.7
% Condiciones: P no debe superar 5 y V no debe
% superar 4
clear;
clc;
P=input('ngrese Presion:');
V=input('ngrese Volumen:');
if P<=5 & V<=4
T=P*V/1.7;
fprintf('La Temperatura es: %g\n',T)
else
if P>5 & V>4
fprintf('Presion y Volumen superiores a lo
permitido\n')
elseif V>4
fprintf('Volumen superior a lo permitido\n')
elseif P>5
fprintf('Presion superior a la permitida\n')
Eugenio Kolb 29
Programacin
end
end
!& Estructuras de Iteracin
a) "structura :Mientras; : el bucle termina
cuando deja de cumplirse condicion
(expresin vectorial o matricial).
C@ile condici'n
.......A1; A2;....
end
b) "structura :for-ne,t;& el bucle se
repite mientras una variable no supere
determinado valor final.
for variable?Valornicial>ncremento>ValorFinal
.......A1; A2;....
end
Asociadas con for y C@ile, se utilizan las
sentencias breaD y continue:
breaD : traslada la ejecucin a la lnea
siguiente a donde est el final del bucle
mas interno.
continue : traslada la ejecucin a la lnea
donde est el final del bucle mas interno
Ejemplos:
% ngresar 5 valores, de a uno, y visualizar la
suma % de los mismos
clear
clc
suma=0;
for i=1:1:5
valor=input('ngrese un numero:');
suma=[suma+valor];
end
fprintf('La suma es: %g\',suma)
% mpresion de la Tabla del 7, entre 1 y 10
clear
clc
fprintf('TABLA DEL 7\n')
fprintf('===========\n')
for k=1:1:10
x=[k 7*k];
fprintf('7 x %g = %g\n' , x)
end
Arc@i(os de !omandos % scripts & y unciones. Arc@i(os +m
Bsicamente, la diferencia entre ambos radica en que las funciones usan variables
con vigencia local (mientras se ejecuta el conjunto de comandos del archivo), tras lo cual dejan
de existir. No pasan a integrar el espacio de trabajo. MatLab tiene bibliotecas propias de
funciones (toolCits), que se venden o distribuyen gratis. Cada usuario, por otra parte, puede
programar sus propias funciones, documentarlas y ubicarlas en su biblioteca personalizada.
Las funciones tienen nombre, argumentos (informacin a procesar) y valores de
retorno (resultados de clculos).
En las primeras lneas, precedidas con M para %ue no sean e"ecuta!les, se puede
ubicar el texto que automticamente se visualiza con 2elp xxx (si xxx fuese el nombre de la
funcin).
La primer lnea e"ecuta!le debe estar precedida por la palabra function:
function [#alores de retorno]=nombredelafuncin(argumentos)
Donde, tanto los valores de retorno como los argumentos estn separados por comas.
Pueden ser escalares, vectores o matrices.
Las siguientes lneas, usando los argumentos, calculan los valores de retorno.
Eugenio Kolb 30
Programacin
Se graba el archivo nombredelafuncin+m (o nombredelprograma+m, si fuese el
caso), en una carpeta que sea el directorio actual, o una ubicada en el searc3 pat3. Y ya est
disponible:
Se puede utilizar desde la ventana de comandos, o desde otro archivo .m.
"jemplo <& Funcin que permite calcular el promedio de los valores ubicados en un
vector fila (o en la primera fila de una matriz), llamado datos. El nombre de la funcin es
promedio, y se graba como promedio.m. Al haber un solo valor de retorno, no se usan
corchetes:
% Funcion Promedio:
% ----------------------
% Calcula el promedio de datos ubicados en un vector
fila
% Datos=datos()
function f?promedio%datos&
c?siBe%datos,2&= % nmero de columnas de datos
sumador=0=
for i=1:c
sumador=sumador+datos(1,i);
end
f=sumador/c;
Desde la #entana de comandos, o desde una lnea de comandos de otro arc3i#o.m, se
puede usar esta funcin:
a)
EE a9O1,3,2,=,K,A,>,MP
a 9
1 3 2 = K A > M
EE promedio(a)
promedio 9
A.>2=6
')
EE c9promedio(OK,11,2,3,L,>,=,MP)
promedio 9
>.3K=6
c)
EE -elp promedio
Quncion Promedio$
@@@@@@@@@@@@@@@@
:alcula el promedio de datos
u'icados en un #ector ,ila
Datos9datos()
"jemplo -& funcin que permite obtener las races de de una ecuacin de 2 grado, dados los
coeficientes. Se guarda con el nombre raicesgrado-+m (en una carpeta ubicada en el camino de
bsqueda establecido en File@Set (at3)/
% raicesgrado2:
% ---------------
% Esta funcion permite obtener las raices de una ecuacion de grado 2
% Datos de entrada: coeficientes a, b y c, de ax^2 + bx + c
% Datos de salida: races r1 y r2
function Gr1,r2H?raicesgrado*%a,b,c&
r1=(-b+(b^2-4*a*c)^0.5)/(2*a);
r2=(-b-(b^2-4*a*c)^0.5)/(2*a);
E6emplos de operaciones matemticas bsicas>
Eugenio Kolb 31
EE Oa,'P9raices+rado2(2,16,=)
a 9
@6.=>3=
' 9
@A.A3>=
Programacin
)"emplo de asignaci'n de datos: dadas las
matrices A y B:
A B
1 2 5 6
3 4 7 8
Establecer una secuencia que permita ubicar los
datos en las variables matriciales, y a
continuacin, realizar las operaciones bsicas:
clc S .orra la #entana de comandos
clear S .orra #aria!les
A>I1 6 J8 <O SAsigna #alores a A
.>IK LJM NO S Asigna #alores a .
Casos de ",presiones Matriciales /
a) AFB : se suma elemento a elemento
6 8
10 12
') A9B : se resta elemento a elemento
-4 -4
-4 -4
c) A.UB : se multiplica elemento a elemento
5 12
21 32
d) AUB : se realiza el producto matricial (1*5 +
2*7 , 1*6 + 2* 8 ; 3*5 + 4*7 , 3*6 + 4*8), es
decir (19 , 22 ; 43 , 50):
19 22
43 50
e) A.VB : se divide elemento a elemento (A/B)
0.2000 0.3333
0.4286 0.5000
,) A.NB : se divide elemento a elemento (B/A)
(equivale a B./A).
5.0000 3.0000
2.3333 2.0000
+) AVB : se realiza la divisin matricial (A/B)
3.0000 -2.0000
2.0000 -1.0000
@& E"ponenciacin
h-1) A.W*: elemento a elemento
1 4
9 16
h-2) AW*: operacin matricial (equivale a A*A.
7 10
15 22
h-3) B.WA: elemento a elemento (las 2 matrices
deben ser de la misma dimensin, o una de ellas
ser un escalar, en cuyo caso volvemos a h-1)
5 36
343 4096
h-3) BWA: operacin matricial (A o B debe ser
escalar):
h-3-1: *.WA>
2 4
8 16
h-3-2: *WA>
10.4827 14.1519
21.2278 31.7106
=tras operaciones&
1) 2ranspuesta de A : AI
1 3
2 4
2) In(ersa de A : in(%A&
-2.0000 1.0000
1.5000 -0.5000
AUin(%A&>
1.0000 0
0.0000 1.0000
E6emplos con automatiBaciones: Dada la
matriz M conteniendo valores numricos.
a) Determinar los sub-ndices donde se
ubican valores mayores a 5.
b) Sumar los valores que cumplan con
esa condicin.
c) Reemplazar los que no cumplen con
esa condicin, con 0.
>> M=[ 2 10 12 5;3 2 17 8;3 1 1 5; 15 12 1 9]
M =
2 10 12 5
3 2 17 8
3 1 1 5
15 12 1 9
>> M1=M>5
M1 =
Eugenio Kolb 32
Programacin
0 1 1 0
0 0 1 1
0 0 0 0
1 1 0 1
>> M2=M(M1)
M2 =
15
10
12
12
17
8
9
>> S=sum(M2)
S =
83
>>M3=M1.*M
M3 =
0 10 12 0
0 0 17 8
0 0 0 0
15 12 0 9
E6ercicio: dado el sistema de ecuaciones
a b ? 5:
* a F ; b ? +
determinar los valores de a y b
Solucin: manualmente, obtendremos que (a=10
y b=-4). Se puede resolver el sistema usando
matrices, de la forma:
M.x = N ---- x = N/M
donde:
M N
1 -1 14
2 5 0
Programa:
% Resolucin de un sistema de 2
ecuaciones
% a - b = 14
% 2 a + 5 b = 0
clc
clear
M=[1 -1;2 5];
N=[14;0];
x=inv(M)*N;
disp('Valores de M')
disp(M)
disp('Valores de N')
disp(N)
disp('Valores de x')
disp(x)
Resultado (al ejecutarse el programa):
Valores de M
1 -1
2 5
Valores de N
14
0
Valores de x
10.0000
-4.0000
Eugenio Kolb 33
ProgramacinFinal2006D.doc 3
Comandos ! funciones bsicas
unciones y comandos generales
@elp: proporciona informacin en lnea sobre
todos los directorios de MATLAB.
@elp comando: porporciona informacin sobre el
comando nombrado
casesen: sensibilidad maysculas/minsculas.
C@at: lista ficheros .m y .mat del directorio de
trabajo.
siBe matriz: dimensiones de una matriz
lengt@ #ector: longitud de un vector
7uit: sale de sesin.
e"it: sale de sesin.
str*num> convierte cadenas (strings) de
caracteres numricos en los nmeros
correspondientes.
str*double: lo mismo, pero el nmero es de
doble precisin.
num*str: convierte un nmero en string.
int*str: convierte un entero en string.
c@ar: devuelve el caracter Ascii a partir de un
valor decimal
unciones matemticas y trigonomLtrica
sin = seno
cos = coseno
tan = tangente
asin = arco seno
acos = arco coseno
atan = arco tangente
atan* = arco tangente del cuarto cuadrante
sin@ = seno hiperblico
cos@ = coseno hiperblico
tan@ = tangente hiperblica
asin@ = arco seno hiperblico
acos@ = arco coseno hiperblico
atan@ = arco tangente hiperblica
abs = valor absoluto o mdulo de un complejo
s7rt = raz cuadrada
real = parte real
imag = parte imaginaria
con6 = complejo conjugado
round = redondea al entero mas prximo
fi" = redondea hacia 0
floor = redondea hacia menos infinito
ceil = redondea hacia mas infinito
sign = funcin de signo
rem = resto
gcd = mximo comn divisor
lcm = mnimo comn mltiplo
e"p = exponencial de base e.
log = logaritmo neperiano
log5+ = logaritmo decimal
unciones matriciales elementales
e"pm = matriz exponencial
logm = matriz logartmica
s7rtm = matriz raz cuadrada
funm = matriz de funciones arbitrarias
poly = polinomio caracterstico
det = determinante
trace = traza
Dron = producto tensorial
)atrices especiales
diag = matriz diagonal
eye = matriz unidad
ones = matriz constante (de 1's)
Beros = matriz nula
rand = matriz aleatoria (elementos distribuidos
uniformemente)
randn = matriz aleatoria (elementos distribuidos
normalmante)
linspace = genera un vector cuyas
componentes estn linealmente espaciadas.
logspace = genera un vector cuyas
componentes estan logartmicamente
espaciadas.
mes@grid = usada con funciones de 2 variables
magic = matriz cuadrada mgica.
@ilb = matriz de Hilbert
in(@ilb = inversa de una matriz de Hilbert
pascal = tringulo de Pascal
compan = matriz cuyo polinomio caracterstico
es el que se proporciona.
tril = parte triangular inferior
triu = parte triangular superior
unciones de anlisis de datos
ma" = valor mximo
min = valor mnimo
mean = valor medio
median = mediana
std = desviacin estandard
sort = ordenacin de elementos
sum = suma de elementos
prod = producto de elementos
cumsum = acumula la suma de elementos
cumprod = acumula el producto de los
elementos
diff = derivadas aproximadas
@ist = histograma
corrcoef = coeficientes de correlacin.
co( = matriz de covarianza
.ptimiBacin
min= calcula el mnimo de una funcin de una
variable
fmins=calcula el mnimo de una funcin de
varias variables
fBero= calcula los ceros de una funcin de una
variable
Eugenio Kolb 34
PROGRAMACIN
A& /rficos
1) /rficas P9K simples>
plot(x,y),title('Ttulo del Grfico'),xlabel('TtuloX'),ylabel('TtuloY'),grid
x e y son vectores. Opciones: pause, pause%n&, print (imprime el grfico en la impresora).
a) /rficos 4ineales y 4ogartmicos>
plot(x,y) Escala Lineal para ambos ejes
semilog"(x,y) Escala Logartmica para x y Lineal para y
semilogy(x,y) Al revs
loglog(x,y) Escala Logartmica para ambos ejes
b) /rficos mXltiples>
plot(x,y,w,z) donde x,y,z y w son vectores. Se grafica x vs. y, y luego w vs. z. La
ventaja es que el nmero de puntos no debe ser el mismo.
plot(x,f) donde x es un vector y f una matriz. Grafica x vs. las columnas
1,2, etc. Sino se especifica x, se usa 1,2, ....n.
L8neas ! marcas&
plot(x,y,'indicador',x,y,'indicador') une los puntos con un indicador de lnea y luego los
marca con otro de puntos.
ndicadores&
a) &e Lneas / - +continua)$ > +guiones)$ & +punteadas)$ -. +guiones - puntos).
') &e ?arcas / + $ ? $ @ $ , $ o $ ,.
Se pueden usar com!inaciones de esos parmetros . P.e.: 'rU9'. O escribir por separado:
plot(x,y,'r',x,y,'U', ..., etc. O establecer color de marca y de lnea por separado.
!olor )arca 4nea
y amarilla . punto 9 solida
m magenta o crculo > punto
c cyan " marca x 9. raya-punto
r roja F marca + 99 raya-raya
g verde U estrella
b azul s cuadrado
C blanca d diamante
D negra ( tringulo (abajo)
W tringulo (arriba)
Q tringulo (izquierda)
O tringulo (derecha)
p pentagrama
@ hexagrama
PROGRAMACIN
"scalas de "jes&
Por defecto, la escala es automtica. Con a"is(x_min,x_max,y_min,y_max) se puede personalizar
la escala. Con axis solo, se mantiene la escala para las siguientes grficas.
1ub(entanas>
subplot(m,n,p) Permite dividir la ventana de grficos en subventanas (2 o 4): m es el n
de filas de ventanas (1 o 2), n el nmero de columnas (1 o 2), y p indica la ventana actual.
)"emplo/
subplot(2,1,2),plot(x,y),title('Ttulo del Grfico'),xlabel('TtuloX'),ylabel('TtuloY'),grid
Divide la ventana de grfico en 2 subventanas: una arriba y otra abajo, y grafica en la ventana inferior.
2) /rficas tridimensionales>
mes@(x,y,z)
Grfica de cuadrcula abierta de la superficie definida por la matriz z; x e y pueden ser vectores que
definen los intervalos de valores de las coordenadas x e y, o matrices que definen la retcula subyacente de
coordenadas x e y.
surf%"#y#B&
Grfica de cuadrcula sombreada en vez de abierta.
Para evaluar una funci'n de una #aria!le f+x)$ se debe calcular un vector de valores x, y
luego calcular el correspondiente vector con los valores de la funcin f(x).
Para evaluar una funci'n de 6 #aria!les f+x$-), se define una retcula bidimensional en el
plano xy. Si en el vector x estn las coordenadas x de todos los puntos de la retcula, y en el
vector y estn las coordenadas y de todos los puntos de la retcula, se usa la funcin mes2grid
para generar las 2 matrices que definen la retcula subyacente para una funcin bidimensional: ,-
grid e !-grid.
Es decir, se generan 2 matrices de tamao n"m, basadas en los valores de los vectores x e y: x-grid
conteniendo los #alores de x repetidos en cada fila$ e --grid conteniendo los #alores de - repetidos en cada
columna.
)"emplo: se desea graficar B? f%"#y& ? 5
5 F "
*
F y
*

en el rango de x entre 2 y 2 con incrementos de 0.1, y de y entre 1 y 2, con incremento de 0.1
(rograma/
x=-2:0.1*2:2;
y=-1:0.1:2;
[x_grid,y_grid]=meshgrid(x,y);
z=1./(1 + x_grid.^2 + y_grid.^2);
subplot(2,2,1),mesh(x_grid,y_grid,z),title('Grafico de Mallas'),xlabel('X'),ylabel('Y'),zlabel('Z')
subplot(2,2,2),surf(x_grid,y_grid,z),title('Grafico de Superficie'),xlabel('X'),ylabel('Y'),zlabel('Z')
subplot(2,2,3),contour(x_grid,y_grid,z),title('Grafico de Contorno'),xlabel('X'),ylabel('Y'),zlabel('Z')
subplot(2,2,4),surfc(x_grid,y_grid,z),title('Grafico de
Superficie/Contorno'),xlabel('X'),ylabel('Y'),zlabel('Z')
% En los 4 casos, se podria haber utilizado x e y en vez de x_grid, y_grid. En el cuarto caso se podria
% haber utilizado meshc para un grfico de Mallas/Contorno
PROGRAMACIN
3) .tras funciones>
plot8
Permite graficar lneas y puntos en un espacio tridimensional.. Es la versin 3D de plot.
plot(x,y,z): ", y y B son vectores de la misma longitud. Esta expresin produce una
lnea en el espacio, que pasa por los puntos definidos en esos vectores.
plot(X,Y,Z): P, K y Y son matrices del mismo tamao. Se obtienen varias lneas que
pasan por esos puntos. Cada columna equivaldra a un vector con datos.
En general, para seleccionar tipo de marcador, y tipo de lnea y color, se usan las mismas
"strings o cadenas de caracteres que en el comando plot. As:
plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3,s3,...): acta al igual que plot, donde la x, y y
z son vectores o matrices.
Ejemplo del Ayuda de MatLab:
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
.b6etos 4I$E# creados con plot y plot8: el comando plot y plot3, una vez ejecutado,
produce uno o ms objetos LNE (lnea). Se pueden asignar propiedades adicionales a cada
objeto.
Objetos LNE y otros, adicionales (se aplican a plot y a plot8):
a) Creaci'n de nue#as lneas/
PROGRAMACIN
line(X,Y): agrega la lnea definida por X-Y a los ejes actuales. Si en vez de
ser vectores, X-Y son matrices del mismo tamao, una lnea por cada columna de las matrices es
aadida: se aplica a plot. Con line(X,Y,Z), se agrega una lnea al actual entorno grfico creado
con plot8.
b) Anotaciones de texto/
text(X,Y, 'string'): agrega un texto en esas coordenadas: se relaciona con
comandos previos plot. Con text(X,Y,Z, 'string'), se extiende el concepto a los grficos 3D
definidos con plot8.
AI& )atemticas
1) Polinomios>
Dado f(x) = a
0
x
N
+ a
1
x
N-1
+ a
2
x
N-2
+ ..........+a
N-1
x + a
N
$=grado del polinomio (valor mas alto usado como exponente).
a+# a5# ....a$, son los coeficientes del polinomio. Siempre hay N+1 coeficientes.
Los valores de x para los que la funcin f(x) es 0, se llaman races.
Un polinomio de grado N tiene N races y N+1 coeficientes.
)"emplo/ si f+x)>xK - 6x
<
- 11x
8
T 6Mx6 T19x - 6</
a) !lculo de f%"& para un dado con6unto de (alores de "# conociendo los coeficientes
del mismo.
La funcin poly(al%a#"& permite calcular el falor de f(x). En la expresin, a es una matriz
que contiene los coeficientes, y " es el valor o los valores a evaluar. El resultado de poly(al es
una matriz del mismo tamao que x.
2) !lculo de las races de un Polinomio
Con la funcin roots%a&, donde a es la matriz que contiene los coeficientes del polinomio,
podemos determinar las raices (5 en este ejemplo).
La funcin poly%r&, donde r es la matriz que contiene las races, permite calcular los coeficientes
del polinomio: es una manera de verificar el clculo anterior.
% Valores del Polinomio f(x), para un conjunto dado de x, conociendo los coeficientes
clc % Se limpia la ventana de comandos
clear % Se borran las variables ya declaradas
a=[1,-2,-11,27,10,-24]; %Coeficientes del polinomio
x=[-2 0 3]; %Valores de x para los que queremos calcular f(x)
p=polyval(a,x); % Se calcula f(x) para esos x
% Graficacin de los datos en ese rango de x
x1=-3:0.01:3; % Se genera una serie de valores de x, desde-3 hasta 3, con incremento de 0.1
p1=polyval(a,x1); % Se calcula f(x) para esos x
plot(x1,p1),title('Polinomio'),grid % Se grafica
% -------------------------------------------------------------- ------------------------------------------------------
% Raices del Polinomio f(x), conociendo los coeficientes
r=roots(a); % Se calculan las raices a partir de los coeficientes
% mpresin de los resultados
fprintf('Coeficientes del Polinomio: \n')
fprintf(' %g %g %g %g %g %g %g %g %g %g \n',a)
fprintf('\nValores de x: \n')
fprintf(' %g %g %g %g %g %g %g %g %g %g \n',x)
PROGRAMACIN
fprintf('\nValores de f(x) determinados: \n')
fprintf(' %g %g %g %g %g %g %g %g %g %g \n',p)
fprintf('\nValores de las races: \n'), r
fprintf('Verificacin de los coeficientes a partir de las races \n')
g=poly(r);
fprintf(' %g %g %g %g %g %g %g %g %g %g \n',g)
Salida impresa$ al e"ecutar el programa/
3) A6uste de datos> regresin polinmica.
Con la funcin polyfit%"#y#n&, donde x e y son determinaciones que se quieren ajustar con
un polinomio de grado n, se obtienen los n+1 coeficientes de ese polinomio.
% Ajuste de datos con un Polinomio de orden n
x=1:10; % se carga en el vector x la serie 1,2,......,10
y=[0,2,5,10,19,28,34,31,32,35]; % se cargan en el vector y los datos
a3=polyfit(x,y,3); % se calculan los coeficientes para un ajuste con un polinomio de grado 3
a6= polyfit(x,y,6); % se calculan los coeficientes para un ajuste con un polinomio de grado 6
x1=0:0.1:10; % se carga en el vector x1 la serie 0, 0.1, 0.2, ...........10
p3=polyval(a3,x1); %para estos valores de x se calculan los valores del polinomio de grado 3
p6=polyval(a6,x1); %para estos valores de x se calculan los valores del polinomio de grado 6
% se grafican los datos: marcas (x,y), linea continua (x1,p3), lnea de puntos (x1,p6):
plot(x,y,'o',x1,p3,'-',x1,p6,'.')
% se imprime el resumen:
clc
fprintf('Valores de x\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', x)
fprintf('\nValores de y\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', y)
fprintf('\n Coeficientes para un ajuste con un polinomio de grado 3\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', a3)
fprintf('\n Coeficientes para un ajuste con un polinomio de grado 6\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', a6)
fprintf('\n Coeficientes para un ajuste con un polinomio de grado 3\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', a3)
:oe,icientes del Polinomio$
1 @2 @11 2K 16 @2A
Halores de "$
@2 6 3
Halores de ,(") determinados$
LL @2A 33
Halores de las raGces$
r 9
@3.316K
2.>>=1 % 6.K2MMi
2.>>=1 @ 6.K2MMi
@6.MLA2
6.M>A>
Heri,icaci!n de los coe,icientes a partir de las raGces
1 @2 @11 2K 16 @2A
PROGRAMACIN
2) )atemtica 1imblica>
(Nota: descriciones y demostraciones de las herramientas de este entorno se obtienen con 3elp2in
tool!oxEs-m!olic$ y con s-mintro, s-mcalcdemo, simlindemo, s-m#pademo, s-mrotdemo, s-mecndemo).
a) .b6etos y (ariables simblicas
La Caja de Herramientas de Matemtica Simblica (5ool.ox S-m!olic ?at3) usa "D!"etos
Sim!'licos producidos por la funcin s!m.
As , la sentencia " ? sym%Z"Z&# produce una #aria!le sim!'lica llamada ".
Se puede abreviar a ? sym%ZaZ&= t ? sym%ZtZ&= " ? sym%Z"Z&= y ? sym%ZyZ&; escribiendo syms a t " y.
Se pueden usar variables simblicas en expresiones, y como argumentos de muchas
funciones:
r = x^2 + y^2
theta = atan(y/x)
atan(y/x)
e = exp(i*pi*t), etc
b) 1implificacin
Con la funcion simple se puede simplificar.
f = sym('cos(x)^2 + sin(x)^2') % el valor de f ser cos(x)^2 + sin(x)^2
f=simple(f) % el valor de f ser 1
f=sym('4*x^(4/2)/2')
Halores de "
1 2 3 A = > K L M 16
Halores de .
6 2 = 16 1M 2L 3A 31 32 3=
:oe,icientes para un auste con un polinomio de +rado 3
@6.13L36> 1.ML>> @2.L1AAM 6.A33333
:oe,icientes para un auste con un polinomio de +rado >
@6.661A=L33 6.6>=36A= @1.6=3A= K.>M1>M @2=.K6KM 3M.KA6M @26.L333
:oe,icientes para un auste con un polinomio de +rado 3
@6.13L36> 1.ML>> @2.L1AAM 6.A33333
PROGRAMACIN
f=simple(f) % resultado es 2*x^2
c) 3eri(adas e Integrales
Es interesante la posibilidad de calcular la integral o la deri#ada en forma directa:
As, si nos interesa la expresin "
8
:
f=sym('x^3')
diff(f) % calcula la derivada 3*x^2 (se podra haber hecho directamente diff('x^3'))
int(f) % calcula la integral *x^4 (se podra haber hecho directamente int('x^3'))
En derivadas e integrales, y en otras operaciones en este entorno, si aparece ms de una
variable, se usa " o la ms cercana alfabticamente a este nombre, salvo que se especifique la
variable. As, int%Z"WaZ& retorna "W%aF5&V%aF5&, pero int%Z"WaZ#ZaZ& retorna 5Vlog%"&U"Wa.
d) !onstantes simblicas
Tambin se crean con la funcin s!m. Por ejemplo: pi?sym%[piI&, usando una constante ya
existente. O: delta?sym%[5V5+I&
e) -esolucin de Ecuaciones
Las funciones sol.e y dsol.e se usan para resolver ecuaciones escritas de manera
simblica.
)"emplo: resolver a"
*
Fb"Fc
a) f=sym('a*x^2+b*x+c')
x=solve(f)
b) syms a b c x
x=solve('a*x^2+b*x+c')
c) x=solve('a*x^2+b*x+c=0')
Cual%uiera de las 8 formas lle#a al siguiente resultado para las races de x/
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
Se debe tener cuidado extremo en manejar los resultados de un clculo. Por ejemplo:
B?sol(e%Z"W*F"UyFy?8Z#Z"W*9:U"F8?+Z& crea una Estructura de Datos B, con 2 componentes: " e
y. Los valores calculados debern ser solicitados de manera explcita:
z.x: [ 1]
[ 3]
z.y : [ 1]
[ -3/2]
Ahora, si se 3u!iese escrito G"#yH? sol(e%Z"W*F"UyFy?8Z#Z"W*9:U"F8?+Z&, esos mismos
resultados se cargaran en los vectores " e y como 2 pares de puntos. (1,1) y (3,-3/2).
Cuando se tienen ms variables que ecuaciones, se plantea la solucin para "# y luego
para aquellas cuyos nombres estn ms cerca alfabticamente a '"', dejando las otras como
variables.
PROGRAMACIN
As, C?sol(e%Z*U"98UyF:UB?55Z#Z9"F5:Uy9:UB?55Z& retorna w.x= -44/25*z+187/25 y w.y=
4/25*z+33/25
Los resultados de diversos clculos se expresan de distinta forma, para lo cual se debe
usar un segundo argumento en la funcin sym, cuyo valor puede ser: a) ZfZ (forma de punto
flotante, '1.F'*2^(e) o '-1.F'*2^(e), donde F es una string de 13 dgitos hexadecimales y e es un
entero), b) ZrZ (por defecto, estable siempre que sea posible la forma racional), c) ZeZ (error,
muestra el error entre la expresin racional y el real valor de punto flotante , y d) ZdZ (forma
decimal, donde el nmero de dgitos es tomado del seteo actual (funcin digits+n)).
E6emplos de utiliBacin de Matemtica Simblica
1) 3ado un polinomio> f%"&?I"W;95+U"W:F;U"W895+U"W*95\U"F5++I
a) Con s!m-pol! , se obriene un 0ector de Coeficientes $ a partir de la expresin
simblica f
f=sym('x^5-10*x^4+5*x^3-10*x^2-18*x+10') % Se crea el objeto simblico
c=sym2poly(f) % En el vector c se cargan [1 -10 5 -10 -18 100]
:ota: si se quisiera ingresar por teclado en tiempo de ejecucin la funcin, debe hacerse como
string - luego cin#ertirla en o!"eto sim!'lico/
fstring=input('ngrese funcion : ','s');
f=sym(fstring)
c=sym2poly(f)
Muchas veces se desea realizar el proceso inverso: con#ertir un o!"eto sim!'lico f en una
string, ya que muchas funciones exigen este formato (por ejemplo, la funcin fplot). Para ello, se
usa la funcin c2ar:
fstring=c@ar(f).
En otros casos, es necesario convertir un dato simblico en su forma numrica, para lo cual se
usa la funcin double.
Una vez obtenidos los coeficientes, recordemos otras funciones relacionadas con
polinomios: roots%c&: obtiene las races de un polinomio; poly(al%c#"&: calcula el polinomio f(x) a
partir de los coeficientes (c); polyfit%"#y#n&: calcula los coeficientes dado un conjunto de pares de
datos xy y el grado del polinomio; etc.
b) Si se desea realizar el proceso inverso: a partir de un =ector de Coeficientes o!tener el
o!"eto sim!'lico$ se debe usar la funcin pol!-s!m :
c=[1 -10 5 -10 -18 100] % se cargan los coeficientes
f=poly2sym(c) % se obtiene el objeto simblico (la funcin)
diff(f) % se obtiene la Derivada 5*x^4-40*x^3+15*x^2-20*x-18
int(f) % se obtiene la ntegral 1/6*x^6-2*x^5+5/4*x^4-10/3*x^3-9*x^2+100*x
c) Utilizacin de la funcin sol.e con polinomios
En el caso de un polinomio como el anterior, sol.e calcula las raices del mismo.
f=sym('x^5-10*x^4+5*x^3-10*x^2-18*x+100')
r=solve(f) % retorna un vector simblico conteniendo las races
rnumero=double(r) % convierte dichas races en nmero -1.626, 0.178-1.948i, 0.178+1.9487i, 1.673, 9.596
PROGRAMACIN
d) Uso de fplot , para graficar una funcin polinmica en formato string .
Si se tuviesen los coeficientes del polinomio, se puede usar un objeto simblico para llegar a la
exprecin string que permita usar fplot.
c=[1 -10 5 -10 -18 100]
f=poly2sym(c)
fstring=char(f)
fplot(fstring[-100,100]) % grafica el polinomio en el rango de x entre 100 y 100
e) Ejemplo de Derivadas, ntegrales y Grficos de un polinomio
clc
clear
fstring=input('ngrese funcion : ','s');
f=sym(fstring);
g=diff(f);
gstring=char(g);
h=int(f);
hstring=char(h);
x1=input('ngrese valor inicial : ');
x2=input('ngrese valor final : ');
clc
Mensaje1=strcat('La funcion f(x) es : ',fstring, '\n');
Mensaje2=strcat('La derivada de f(x) es : ',gstring, '\n');
Mensaje3=strcat('La integral de f(x) es : ',hstring, '\n');
,print,(Nensae1)
fprintf(Mensaje2)
fprintf(Mensaje3)
deltax=(x2-x1)/20;
subplot(2,2,1),eBplot(f,[x1,x2])
subplot(2,2,2),eBplot(g,[x1,x2])
subplot(2,2,3),eBplot(h,[x1,x2])
Ejecucin:
ngrese funcion : x^4-8*x^3+6*x^2-18*x+100
ngrese valor inicial : -100
ngrese valor final : 100
La funcion f(x) es :x^4-8*x^3+6*x^2-18*x+100
La derivada de f(x) es :4*x^3-24*x^2+12*x-18
La integral de f(x) es :1/5*x^5-2*x^4+2*x^3-9*x^2+100*x
2) -esolucin de 1istemas de Ecuaciones de di(ersos tipos
a) Dado el sistema siguiente, obtener la solucin:
2x - 14y z = 14
x + y - 12z = -5
-x + 10y + 2z =-8
clear
clc
f1=sym('2*x-14*y-z=14');
Nota$ si se (uisiera usar fplot en #e5 de ezplot,
-a'rGa (ue con#ertir ,, + . - en strin+s, con la
,unci!n char.
Heri,icaci!n en la #entana de comandos$
N9O2 @1A @1; 1 1 @12; @1 16 2P;
79O1A;@=;@LP;
R9 in#(N)& 7
R 9
2.L>62
@6.>3AA
6.>622
PROGRAMACIN
f2=sym('x+y-12*z=-5');
f3=sym('-x+10*y+2*z=-8');
[x,y,z]=solve(f1,f2,f3);
fprintf(char(f1))
fprintf('\n')
fprintf(char(f2))
fprintf('\n')
fprintf(char(f3))
fprintf('\n\n')
fprintf('x = %g y = %g z = %g',double(x),double(y),double(z))
Al e"ecutar/
2*x-14*y-z=14
x+y-12*z=-5
-x+10*y+2*z=-8
x = 2.86022 y = -0.634409 z = 0.602151
b) Resolver: "
*
9*"yF8y?955# "Fy
*
?5]
clear
clc
[x,y]=solve('x^2-2*x*y+3*y=-11', 'x+y^2=17');
xx=double(x)
yy=double(y)
3) .b6etos inline# string y simblicos>intercon(ersin y funciones
relacionadas
.b6etos inline > permiten crear directamente una funcin sin crear el archivo .m. As:
function[y]=cuadratic(a,b,c,x)
y='a*x^2-b*x+c'
equivale a:
cuadratic=inline('a*x^2-b*x+c')
.b6etos String& permiten escribir expresiones como simples cadenas de caracteres, y
utilizarlas con funciones de Matlab que las acepten as, o luego de convertirlas en otro tipo de
objeto.
)"emplos:
fplot('5*x^4-2/x+8',[-100,100])
fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])
fplot('sin(1/ x)', [0.01 0.1],1e-3)
ezplot('cos(x)')
ezplot('x^3 + 2*x^2 - 3*x + 5 - y^2')
zsurf('s*cos(t)','s*sin(t)','t') para expresiones strings o simblicas
-esumen relacionado con funciones e intercon(ersin de tipos de datos>
Dada una ecuacin asignada de manera implcita (f = 'x^3-3*x+1/x^0.5'), (o ingresada por
teclado: f=input('ngrese funcion implicita: ','s')). Se tiene una cadena de caracteres, u objeto
string.
"" 9
3.A3KA @ 2.=LA6i
3.A3KA % 2.=LA6i
6.1=>M
@11.631K
.. 9
3.>MM3 % 6.3AM3i
3.>MM3 @ 6.3AM3i
@A.16A6
@=.2MA=
PROGRAMACIN
1) Con f se pueden realizar operaciones directamente: diff, int, fplot, etc.
2) f0= sym(f) con#ierte la cadena en un objeto simblico
Con f9 se pueden usar todas las funciones relacionadas con Ulge!ra Sim!Vlica
3) f1 = (ectoriBe(f) convierte los operadores W, V, etc.; en .W, .V. Se aplica si f es string o
una funci'n inline.
4) f4=inline(f1) convierte la cadena en un objeto funcin
Se pueden usar$ con f</ /uad +e#aluaci'n num0rica de una integral simple +Simpson))$
/uadl +e#aluaci'n num0rica de una integral simple +Lo!atto)$ dbl/uad +e#aluaci'n num0rica de
una integral do!le)$ triple/uad +e#aluaci'n num0rica de una integral triple)$ etc.
E6emplo 5
f='2*x^2-20*x+600' objeto String
f1=sym(f) objeto Simblico
solve(f1) Resolucin planteada
double(solve(f1)) Resolucin completa
E6emplo *
f='3*x^4-27*x^3+67*x^2-15*x-20'
f1=inline(f)
f2=vectorize(f1)
x=-10:1:10
y=f1(x) %error
y=f2(x)
plot(x,y)
f3=sym(f1)
b=double(solve(f3))
"jercicio&
clc;clear;
f=input('ngrese funcion implicita: ','s');
f1=vectorize(f);
f0=sym(f);
f2=diff(f);
f3=int(f);
fprintf('Funcion : %s , vectorizada a la forma %s\n',f,f1);
fprintf('Derivada : %s\n',char(f2));
fprintf(ntegral: %s\n',char(f3));
subplot(2,2,1),ezplot(f0),grid,subplot(2,2,2),ezplot(f2),grid,subplot(2,2,3),ezplot(f3),grid
r=double(solve(f0));
disp('Las raices son:');
disp(r)
fprintf('\n')
rango=input('ngrese rango de x entre corchetes, valores separados por coma :');
X=min(rango):(max(rango)-min(rango))/20:max(rango);
f4=inline(f1);
Y=f4(X);
subplot(2,2,4),plot(X,Y),grid
quad(f4,0, 100) % integral entre 0 y 100
3) Aplicaciones /rficas y Pedaggicas
En los ejemplos anteriores, hemos visto la importancia de ingresar una expresin
matemtica literal como cadena de caracteres, con distintos ejemplos; as como esa string se
PROGRAMACIN
convierte en un objeto simblico. A partir de poderosas funciones, se obtienen resultados que
tambin hay que administrar, convertir, etc.
Con los mismos criterios, se pueden utilizar una gran serie de funciones escritas de forma
simblica.
Escribiendo 3elp2in s-m!olic en la ventana de comandos, tenemos una descripcin de
distintas funciones que seran de gran utilidad en el estudio y/o enseanza de Matemticas. En
cada caso, con una serie de ejemplos.
Merece destacarse el conjunto de funciones destinadas a la representacin de funciones
de 2 y 3 dimensiones: eBcontour# eBcontourf# eBmes@# eBmes@c# eBplot# eBplot8# eBpolar#
eBsurf# eBsurfc, etc.
)"emplo/
clear
clc
f= sym('x^2-2/y^2+14');
ezmesh(f)
pause(5)
ezcontour(f)
pause(5)
ezsurf(f)
pause(5)
ezsurfc(f)
pause(5)
f=sym('sin(t)/t')
ezpolar(f, [-6*pi,6*pi])
AII& Interfaces /rficas con )at4ab
La nterface Grfica de Usuario (GU) permite, entre otras cosas:
a) Atili$ar 0entanas#ersonali$adas, con botones de comandos, elementos de men,
cuadros de edicin de datos, elementos grficos, globos de ayuda, etc. Tal como cualquier
aplicacin Windows.
b) #rogramar ".entos. Por ejemplo, un Evento puede ser un clicC sobre un botn, ... y
puede existir un conjunto de sentencias que se ejecutarn cada vez que se haga clicC en ese
botn.
c) Atili$ar un Asistente que gua al Usuario en la creacin de la Ventana o Formulario.
Este Asistente permite personalizar fcilmente la #entana grfica, y genera una gran parte del
c'digo (creacin de funciones, declaracin de varianles, etc.). El Usuario debe, nicamente,
planificar - ordenar la secuencia de ingreso de datos, u!icar las sentencias de clculo (tal como
hara en la Ventana de Comandos), y dirigir$ mostrar -@o graficar los resultados.
Este punto tiene por objeto intentar resumir los pasos necesarios para que el usuario
comn, ya habituado a usar las poderosas herramientas de clculo y graficacin a travs de la
escritura de sentencias en la ventana de comandos, y a la escritura de cdigo de programacin
simple almacenados en archivos .m; pueda reunir en una sola aplicacin distintas herramientas de
clculo y visualizacin de resultados, pudiendo incluso utilizar menes que agrupan y resuelven
en un mismo archivo situaciones anteriormente distribuidas en varios archivos.
Pasos para crear la /'I>
1) Con File@:e2@Gui@.lanC, se tiene un Formulario en blanco y una Barra de Herramientas
que se pueden empezar a insertar en aqul. Se estn generando 2 archivos distintos: la Figura (o
PROGRAMACIN
Formulario o Ventana Grfica, con los Controles, sus Propiedades, etc.), que se almacena con la
extensin .fig., y un archivo que se almacena con la extensin .m, conteniendo el cdigo de
programacin, autogenerado en gran parte por el Asistente. Conviene que ambos archivos tengan
el mismo nombre.
El archivo es de tipo function, con la forma function #arargout > xxxx+#arargin)$ donde
xxxx es el nombre asignado al archivo. En esta etapa, simplemente ignoraremos los rtulos,
declaraciones y cdigo creado de manera automtica encabezando el archivo, pero evitando
cuidadosamente de alterar su contenido.
Por otra parte, se crean automticamente prototipos de sub-funciones asociadas a Eventos
asociados a cada uno de los Objetos de la figura, empezando por la Figura en s (contenedora de
los otros controles). Nosotros nicamente insertaremos cdigo de programacin all donde nos
interese.
Una primera mirada del usuario (que observa por primera vez el extenso cdigo
autogenerado hasta ahora, sin 3a!er 3ec3o prcticamente nada a1n), le produce preocupacin, lo
cual es un error/ podemos #irtualmente ignorar gran parte del mismo - o!tener sin em!argo
importantes resultados con la GA,.
Nota: si se desea modificar una Figura existente, tambin hay que ingresar con File@:e2@Gui.
2) Se insertan Controles (objetos programables). Nos interesa, en esta etapa, estudiar
(adems de la Figura en s), los controles: Text, Edit, Pushbutton, Axes y Popupmenu.
Con el botn derecho del ratn accionando sobre un Objeto y eligiendo (ropert- ,nspector
(o haciendo do!le clicC sobre el Control), podemos, trabajando en 2iempo de 3ise<o, asignar los
.alores iniciales de las #ropiedades de cada =bjeto: valores, aspecto, color, etc.
Las #ropiedades fundamentales de los Objetos, que utilizaremos en esta etapa, son las
siguientes:
- 2ag: contiene el nombre del objeto. MatLab asigna un nombre genrico a cada objeto,
segn orden de insercin (text1, edit3, pushbutton2, etc.). Se recomienda no modificar esos
nombres.
- 1tring: te,to .isible del objeto. Puede ser editable en Tiempo de Ejecucin (en los
controles Edit).
- Aisible: con on u off se hace visible o invisible el control.
Los =bjetos fundamentales que utilizaremos, en esta etapa, son:
- Pus@button: en tiempo de ejecucin, al hacer click sobre el mismo, se ejecuta el cdigo
indicado en el texto asociado o "String.
- 2e"t: texto esttico (rtulo), modificable en tiempo de ejecucin.
- Edit: texto dinmico, modificable en tiempo de ejecucin por teclado. La propiedad String
de este objeto puede ser utilizada para ingresar nmeros, que luego seran convertido en tales
usando la funcin str-num.
- A"es: subventana de grfico.
Las operaciones bsicas que realizaremos en esta etapa son:
a) Crear una interface, ubicando controles y estableciendo propiedades.
b) Programar secuencias que permitan ingresar datos dentro de objetos, llevar los
datos a variables, realizar clculos y operaciones con los mismos, mostrar los resultados en
objetos, y graficar en subventanas: todo en la misma Figura.
Debemos incorporar algunos conceptos importantes:
PROGRAMACIN
Sentencia get : permite, en Tiempo de Ejecucin, tomar el #alor de una propiedad de un
o!"eto o control para procesar ese dato (asignndolo a variables, etc.).
#aria!le > get+D!"eto$ W:om!re de (ropiedadR)
significa "asignar a la #aria!le el #alor actual de la propiedad tal del o!"eto tal.
D!"eto: es el 3andle o propietario del objeto.
)"emplos:
a=get(handles.edit3,'String')
asigna el contenido de la propiedad 4String del control )dit8 a la #aria!le alfanum0rica a
a=str2num(get(handles.edit3,'String'))
asigna el contenido de la propiedad 4String del control )dit8 +%ue de!e contener n1meros)$ a la #aria!le
num0rica a$ %ue ser escalar$ #ector o matriz$ seg1n cantidad - distri!uci'n de los n1meros
Sentencia set : permite, en Tiempo de Ejecucin, modificar el #alor de propiedades de un
o!"eto o control. En cierta manera, realiza la operacin inversa que get.
set (Objeto, 'Nombre de Propiedad','Valor de la Propiedad'):
significa 4asignar a la propiedad tal$ de tal o!"eto$ tal #alor
)"emplos:
set(handles.text2,'Visible','on')
set(handles.text2,'String','ngrese los coeficientes del polinomio')
La primera lnea 3ace =isi!le el control text6$ - la segunda asigna al mismo una cadena de
caracteres.
"jemplos prcticos
E6ercicio 5> creacin de un formulario con los elementos que permitan ingresar, y
representar pares de datos x-y, en una primera subventana grfica; y en una segunda
subventana, representar la cuadrtica a."
*
Fb."Fc.
(asos/
1) File/New/Gui/Blank.
2) Se insertan los siguientes elementos (en todos los casos MatLab asigna un nombre
generico caracterstico de cada objeto, seguido por un nmero (p.e. Axes1, Edit3), los que se
almacenan en la propiedad Tag del mismo: no se recomienda su modificacin):
a) 2 objetos Axes (subventanas grficas), Axes1 y Axes2, donde se representarn los
datos.
b) 7 objetos Edit, dentro de los cuales se pueden escribir los datos. En Edit1 y Edit2 se
ingresarn los datos de los vectores X e Y a representar en Axes1. En Edit3, Edit4 y Edit5 se
ingresarn los parmetros a, b y c de la cuadrtica a representar en Axes2, entre los valores x1 y
x2, especificados en Edit6 y Edit7.
PROGRAMACIN
c) 2 objetos Pushbutton: el primero de ellos para e"ecutar la graficacin en Axes1, y el
segundo para hacerlo en Axes2.
d) 7 objetos Text, uno para cada Edit, con el nico objeto de visualizar el texto indicativo
de cada uno de stos.
3) Ubicando los controles en sus respectivos lugares, en Tiempo de Diseo, se
establecern las Propiedades niciales: con botn derecho/Property nspector (o doble click):
a) La propiedad String es el Texto Visible en cada caso (salvo Axes): se la modifica en
cada caso (en los Edit se elimina el texto).
b) Cualquier otra propiedad: fuente, color, etc., etc.
La interface grfica ya est terminada, y se la grabar como xxxx.fig. En otro momento,
para volver a editar la figura, hay que ingresar con File/New/Gui/Open Existing File.
An no hay cdigo de programacin asociado. MatLab genera automticamente un archivo
que se grabar como xxxx.m (siendo conveniente mantener el mismo nombre de la figura). Utiliza
subfunciones en donde se ingresar el cdigo asociado a cada objeto: aqu utilizaremos la
subfuncin Callback.
Como todo asistente, el de MatLab genera un archivo con cdigo inicial que podran
modificar usuarios con slidos conocimentos, pero que en primera instancia se debe dejar como
est.
En nuesto caso, evidentemente la secuencia de sentencias ejecutables se asocian a los
botones de comandos, los cuales programaremos de la siguiente manera:
function varargout = pus@button5_Callback(h, eventdata, handles, varargin)
x=str2num(get(handles.edit1,'String')) % con get se toma la propiedad String actual de edit1
y=str2num(get(handles.edit2,'String'))
plot(x,y,'Parent',handles.axes1)
set(handles.axes1,'XGrid','on','YGrid','on')
% --------------------------------------------------------------------
function varargout = pus@button*_Callback(h, eventdata, handles, varargin)
a=str2num(get(handles.edit3,'String'))
b=str2num(get(handles.edit4,'String'))
c=str2num(get(handles.edit5,'String'))
x1=str2num(get(handles.edit6,'String'))
x2=str2num(get(handles.edit7,'String'))
xx=x1:(x2-x1)/20:x2
yy=a.*xx.^2+b.*xx+c
plot(xx,yy,'Parent',handles.axes2)
set(handles.axes2,'XGrid','on','YGrid','on')
7ota$ con get se toma, en tiempo de eecuci!n el #alor
de al+una propiedad de al+Dn o'etoSPara -acer lo
contrario, se usa set. !jemplo$ a+re+ar un nue#o
control Be"tL . un 'ot!n Pus-'utton3, . pro+ramar
para (ue aciendo click en *ste, se u'i(ue en a(u*l un
mensae$
set"#andles.text$%&'tring% )!so es *na pr*eba)
PROGRAMACIN
E6ercicio *: Se desea obtener un formulario a travs del cual # ingresando los
coeficientes de un polinomio# calcular las races y graficar los (alores "9y para " entre + y
5+. La idea es la siguiente, se iniciar la aplicacin (ver figura), con los controles Text2, Edit1 y
Pushbutton3 invisibles (propiedad visible=off, en Tiempo de Diseo). Al pulsar Pushbutton1, esos
3 controles se harn visibles. Pulsando Pushbutton3, los coeficientes ingresados en Edit1 se
utilizarn para calcular y visualizar las raices en Edit2, y para graficar los datos en Axes1.
Pushbutton2 no existe.
Se usar Pushbutton4 para re-graficar el polinomio entre 2 nuevos lmites de x, ubicados
en Edit3 y Edit4
A"es(
A"es2
Edit1 a
K
Pus-'utton1 . 2
Be"t1 a K
PROGRAMACIN
function pus@button5_Callback(hObject, eventdata, handles)
set(handles.text2,'Visible','on')
set(handles.edit1,'Visible','on')
set(handles.text2,'String','ngrese los coeficientes del polinomio')
set(handles.pushbutton3,'Visible','on')
function pus@button8_Callback(hObject, eventdata, handles)
A=roots(get(handles.edit1,'String'))
set(handles.text3,'String','Las Raices son:')
set(handles.edit2,'Visible','on')
set(handles.edit2,'Style','text')
set(handles.edit2,'String',num2str(A))
x1=-1
x2=10
x=x1:(x2-x1)/50:x2
y=polyval(str2num(get(handles.edit1,'String')),x);
plot(x,y,'Parent',handles.axes1)
function pus@button:_Callback(hObject, eventdata, handles)
x1=str2num(get(handles.edit3,'String'))
x2=str2num(get(handles.edit4,'String'))
x=x1:(x2-x1)/50:x2
y=polyval(str2num(get(handles.edit1,'String')),x);
plot(",.,IParentI,-andles.a"es1)
Be"t1
Pus-'utton1
Be"t2
Edit1
Pus-'utton3
Be"t3
Edit2
Edit3
EditA
Pus-'uttonA
A"es1
PROGRAMACIN
E6ercicio 8> se pretende programar una Figura o Formulario en MatLab que permita
resolver Sistemas de Ecuaciones Lineales , ingresando la matriz de coeficientes y un vector
columna con los trminos independientes.
function pus@button5_Callback(hObject, eventdata, handles)
A=str2num(get(handles.edit1,'String'))
B=str2num(get(handles.edit2,'String'))
X=inv(A)*B;
set(handles.edit3,'String',num2str(X))
Be"t1
Be"t2
Be"t3
Be"tA
Be"t=
Edit1
Edit2
Edit3
Pus-'utton1
PROGRAMACIN
E6ercicio :> programar una aplicacin que permita, en el mismo formularo a) graficar una
serie de datos x-y-z a travs de distintos mtodos, b) graficar distintas funciones simblicas
popup_sel_index = get(handles.popupmenu1, 'Value');
x=[1 2 3 4 5]
y=[10 20 30 40 50]
z=[1 2 3 5 7;2 3 6 8 8;3 4 6 7 8; 3 5 6 8 7;2 5 4 3 2]
[Xgrid,Ygrid]=meshgrid(x,y)
switch popup_sel_index
case 1
plot(x,y),xlabel('X'),ylabel('Y'),zlabel('Z')
case 2
plot3(Xgrid,Ygrid,z)
case 3
mesh(Xgrid,Ygrid,z)
case 4
surf(Xgrid,Ygrid,z)
case 5
contour3(Xgrid,Ygrid,z)
case 6
surfc(Xgrid,Ygrid,z);
end
set(handles.axes1,'XGrid','on','YGrid','on');
set(handles.axes1,'XDir','normal','YDir','normal');
set(handles.axes1,'XColor','blue','YColor','blue');
% set(gca,XLabel('X'),YLabel('Y'),ZLabel('Z'))
function popupmenu2_Callback(hObject, eventdata, handles)
axes(handles.axes1);
cla;
popup_sel_index = get(handles.popupmenu2, 'Value');
PROGRAMACIN
switch popup_sel_index
case 1
ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)',[-6*pi,6*pi])
case 2
ezsurf('x*exp(-x^2 - y^2)')
case 3
ezsurf('x*(y^2)/(x^2 + y^4)')
case 4
ezsurf('x*y','circ')
case 5
ezsurf('real(atan(x + i*y))')
case 6
ezsurf('exp(-x)*cos(t)',[-4*pi,4*pi,-2,2])
case 7
ezsurf('exp(-s)*cos(t)','exp(-s)*sin(t)','t',[0,8,0,4*pi])
case 8
ezsurf('cos(s)*cos(t)','cos(s)*sin(t)','sin(s)',[0,pi/2,0,3*pi/2])
case 9
ezsurf('s*cos(t)','s*sin(t)','t')
case 10
ezsurf('s*cos(t)','s*sin(t)','s')
end
E6ercicio ;: disear un formulario o figura, tal que permita, ingresando los valores de X e
Y, obtener el grfico correspondiente.
Se utilizarn 2 cuadros de texto o rtulos (text), 2 cuadros de edicin (edit), un botn de comandos
(pus3!utton), y una subventana de grficos (axes).
Si el usuario ingresa 2 vectores de distinta longitud, se visualizar un cuadro de dilogo que
informe de ste error.
function pus@button5_Callback(hObject, eventdata, handles)
x=str2num(get(handles.edit1,'String'))
y=str2num(get(handles.edit2,'String'))
if length(x)==length(y)
plot(x,y,'^-'),title('f(x) vs.x'),xlabel('Valores de X'),ylabel('Valores de Y'),grid
else
msgbox('Los vectores tienen distinta longitud')
end
Programacin
Anexos
+nexo ,
Codificacin de Datos
?a pala'ra N0S087ES puede ser almacenada . procesada por un ordenador. Biene L letras
o caracteres. AsG como se o'ser#a en este te"to, est/ lista para ser leGda . asimilada por el usuario
comDn.
Sin em'ar+o, para otros ,ormatos de representaci!n necesariamente de'emos
descomponerla en los caracteres (ue la componen. :ada car/cter, a su #e5, puede ser escrito usando
distintos c!di+os. Por eemplo$
AS:00 M I S I O N E S
Decimal KK K3 L3 K3 KM KL >M L3
Te"adecimal AD AM =3 AM AQ AE A= =3
Binario 1661161 1661661 1616611 1661661 1661111 1661116 1666161 1616611
Resulta e#idente (ue, si intentamos ima+inar mecanismos ,Gsicos para almacenar o
transmitir esa in,ormaci!n, el c!di+o 'inario es el (ue meor se adapta, al estar representado por
dG+itos (ue pueden tomar solo 2 #alores (6 o 1). Es lo (ue se llama -it. ?a traducci!n directa de esta
,orma de representar los datos a ,en!menos ,Gsicos resulta e#idente$ la posici!n 4encendido< o
4apa+ado< de un interruptor, un punto de un soporte ma+n*tico (ue est* imantado o no, un
conductor el*ctrico (ue ten+a o no corriente, un lu+ar de una tareta de cart!n (ue est* per,orado o
no, etc.
Usando 4pa(uetes< de 'its .a podemos representar m/s datos. ?os pa(uetes de L bits,
llamados -.tes, permiten representar todos los caracteres (ue conocemos.
Si ima+inamos, dentro de un ordenador, un lu+ar de recepci!n ,Gsica (ue detecta a tra#*s de
L conductores el*ctricos comunicados con el teclado el pulsado de una tecla, . si sa'emos (ue
a(uellos conductores (ue tienen corriente el*ctrica se representan con 1, . los (ue no con 6,
podemos con#ertir esa in,ormaci!n a un ,ormato m/s 4ami+a'le<. AsG, si se detecta una pulsaci!n
de tecla con la secuencia 61666661, es por(ue se puls! la 4A<.
1ase de numeracin
Se re,iere al nDmero de sGm'olos di,erentes usados para representar un #alor.
:!di+o 1inario ('ase 2)$ utili5a 46< . 41<.
:!di+o "e9adecimal ('ase 1>)$ utili5a 46<, 41<, ...<M<, . 4A<, 4B<, ... 4Q<.
:!di+o 'ecimal ('ase 16)$ utili5a 46<, 41<, ... 4M<.
Bodo dato tiene su correspondencia con estos sistemas de numeraci!n.
Sistema 1inario
:onsiderando (ue utili5a 2 sGm'olos para representar #alores (46< . 41<), com'inando los
mismos se tienen los si+uientes eemplos$
@ Utili5ando 1 dG+ito, se o'tienen 2 com'inaciones$ 6 . 1.
Programacin
@ Utili5ando 2 dG+itos, se o'tienen A com'inaciones$ 66, 61, 16, . 11.
@ Utili5ando 3 dG+itos, se o'tienen L com'inaciones$ 666, 661, 616, 611, 166, 161, 116, 111.
@ Utili5ando 7 dG+itos, se o'tienen 2
7
com'inaciones. En los 3 casos anteriores, se tendrGa$ 2
1
,
2
2
, . 2
3
com'inaciones.
Utili5ando cada una de esas com'inaciones para representar los nDmeros enteros, se tiene el
Sistema o :!di+o 'ecimal$ 6, 1, 2, 3, A, =, ...etc.
1inario 6 1 16 11 166 161 116 111 1666 1661 1616 1611 1166 1161 1116 1111 16666
'ecimal 6 1 2 3 A = > K L M 16 11 12 13 1A 1= 1>
Se puede +enerali5ar diciendo (ue a partir de un #alor escrito en :!di+o Binario se o'tiene
el correspondiente #alor 7atural Entero (Sistema Decimal), e"pres/ndolo como una sumatoria de
potencias de 4.
AsG, un nDmero escrito en c!di+o Binario usando 7 dG+itos$ a
7@ 1
a
7@ 2
a
7@ 3
. . . . a
2
a
1
a
6
, puede
con#ertirse en el correspondiente #alor Decimal con la e"presi!n a
6
2
6
% a
1
2
1
% a
2
2
2
% . . . . . %
a
7@ 1
2
7@ 1
$
611666161166116661 7 dG+itos 'inarios
a
7@ 1
a
7@ 2
a
7@ 3
. . . . a
2
a
1
a
6 9
a
6
2
6
% a
1
2
1
% a
2
2
2
% . . . . . % a
7@ 1
2
7@ 1
9
Una ,orma pr/ctica de con#ertir #alores de un sistema a otro es a tra#*s de la utili5aci!n de
una sencilla ta'la, asociando el nDmero decimal correspondiente a cada uno de los dG+itos 'inarios
utili5ados, de derec-a a i5(uierda, . sumar los correspondiente a los dG+itos 4acti#os< en la
codi,icaci!n 'inaria (1).
=12 2=> 12L >A 32 18 L A 4 1 Decimal 1> % 2 9 1L
6 6 6 6 6 1 6 6 1 6 Binario 16616
8tra manera consiste en ir di#idiendo el #alor decimal por 2. Por eemplo, si partimos del
decimal K1, o'tendremos (ue le corresponde el #alor 'inario 1666111
K1 2
1 3= 2
1 1K 2
1 L 2
6 A 2
6 2 2
6 1 Bomando desde atr/s -acGa adelante$ 1666111
=12 2=> 12L 8: 32 1> L : 4 1 8: ; : ; 4 ; 1 < =1
6 6 6 1 6 6 6 1 1 1
/peraciones con n0meros binaros
?as operaciones con nDmeros 'inarios son sencillas. Se utili5a casi el mismo ra5onamiento
(ue al tra'aar con #alores decimales. AsG$ 1 % 6 9 1, 6 % 6 9 6, 1 " 6 9 6, 1 " 1 9 1. Sin em'ar+o, 1
i N
i
i
a

=
1
6
2
Programacin
% 1 9 16 (no 2). !jemplo$ el decimal 16 tiene la si+uiente e(ui#alencia 'inaria$ 1616. El decimal M,
por otra parte, 1661. :on la suma . el producto de am'os #alores decimales o'tenemos 1M . M6.
V:!mo se reali5arGa el c/lculo tra'aando con #alores 'inariosW
Suma Producto
1 6 1 6 1 6 1 6
% "
1 6 6 1 1 6 6 1
1 6 1 6
1 6 6 1 1 6 6 6 6
6 6 6 6
(1M) 1 6 1 6
1 6 1 1 6 1 6
(M6)
Sistema "e9adecimal
Utili5a 1> sGm'olos para representar #alores (los 16 dG+itos num*ricos, 46< a 4M<, . las >
primeras letras, 4A< a 4Q<. Estos caracteres, en ese orden, se corresponden con los #alores 6 a 1=
del c!di+o decimal.
?o (ue se puede representar con A dG+itos del c!di+o 'inario, se puede representar con un
sGm'olo del c!di+o -e"adecimal. :on ese criterio, podemos reali5ar las con#ersiones.
!jemplos$
231
(16
9 1116 6111
(2
9 EK
(1>
E K
Binario Te"adecimal Decimal
11 3 3
161 = =
1161 D 13
1111 Q 1=
1 6666 16 1>
1 6661 11 1K
1 1111 1Q 31
16 6666 26 32
16 1116 2E A>
1 1616 1161 1AD A2M
1) 1digo +'122
Programacin
Un ordenador procesa . almacena in,ormaci!n binaria. Sin em'ar+o, para representar
caracteres, se de,ine el c!di+o !SCII (American Standard Code 3or In3ormation Interc#ange).
Para ello, se usan octetos de dG+itos 'inarios o Bits (de Binar. Digit). Esos 4pa(uetes< de L 'its,
denominados Bytes, permiten 2
L
9 2=> com'inaciones posi'les. ?os primeros 12L (decimal 6 a
12K) constitu.en el con>unto )?sico uni(ersal, mientras (ue los si+uientes 12L son utili5ados de
manera di,erente por los di#ersos ,a'ricantes de e(uipos . desarrolladores de So,tXare. Adem/s, los
32 primeros #alores est/n reser#ados para control de comunicaciones, de impresoras . otros (el
retorno de carro est/ representado por el 4car/cter< AS:00 con #alor decimal 13).
El (ue corresponde a decimal 6 (primer #alor de la ta'la), indica 4#acGo< (una cadena de caracteres
de lon+itud 6, lo (ue no de'e con,undirse con un dato 4nulo< o ine"istente). El car/cter
correspondiente al decimal 32 (espacio en 'lanco) inicia el set de caracteres (ue normalmente
encontramos en cual(uier teclado. Es importante tener la ta'la de con#ersi!n$ en cualquier
momento podemos generar el carcter escribiendo en el teclado num!rico el n"mero
correspondiente en el cdigo decimal# mientras se mantiene pulsada la tecla A$%.
Se de'e destacar (ue caracteres como Y, Z, [, etc, se encuentran .a en el conunto e"tendido de
caracteres (entre decimal 12L . 2==).
En los eemplos anteriores se -a #isto (ue en el sistema Binario se utili5an dG+itos (6 o 1)
puestos uno al lado del otro. :ada uno de los dG+itos se llama 1it (de Binar. Digit).
Un octeto de dG+itos 'inarios resulta su,iciente para representar cual(uiera de los sGm'olos
utili5ados normalmente en un teclado. De esa manera se de,ine el 1@te, . el c!di+o donde se
representa cada sGm'olo (letras, nDmeros, sGm'olos, etc.) se denomina AS:00 (1digo !st4ndar
+mericano para el 2ntercambio de 2n3ormacin). Un B.te puede tomar 2=> com'inaciones
posi'les$ su,icientes para (ue cada una de ellas represente un car4cter.
1onj*nto -4sico 5ni6ersal de 1aracteres +'122
1inario 'ecimal "e9adecimal !SCII 1inario 'ecimal "e9adecimal !SCII
6 6 6 +(acio- 1666661 >= A1 !
1 1 1 1666616 >> A2 1
16 2 2 1666611 >K A3 C
11 3 3 1666166 >L AA '
166 A A 1666161 >M A= E
161 = = 1666116 K6 A> F
116 > > 1666111 K1 AK G
111 K K 1661666 K2 AL "
1666 L L 1661661 K3 AM I
1661 M M 1661616 KA AA A
1616 16 A 1661611 K= AB B
1611 11 B 1661166 K> A: .
1166 12 : 1661161 KK AD M
1161 13 D 1661116 KL AE N
1116 1A E 1661111 KM AQ O
1111 1= Q 1616666 L6 =6 P
16666 1> 16 1616661 L1 =1 #
16661 1K 11 1616616 L2 =2
16616 1L 12 1616611 L3 =3 S
16611 1M 13 1616166 LA =A T
16166 26 1A 1616161 L= == $
16161 21 1= 1616116 L> => V
16116 22 1> 1616111 LK =K C
Programacin
16111 23 1K 1611666 LL =L &
11666 2A 1L 1611661 LM =M D
11661 2= 1M 1611616 M6 =A E
11616 2> 1A 1611611 M1 =B F
11611 2K 1B 1611166 M2 =: G
11166 2L 1: 1611161 M3 =D H
11161 2M 1D 1611116 MA =E I
11116 36 1E 1611111 M= =Q J
11111 31 1Q 1166666 M> >6 K
166666 32 26 +es*acio- 1166661 MK >1 a
166661 33 21 L 1166616 ML >2 )
166616 3A 22 M 1166611 MM >3 c
166611 3= 23 N 1166166 166 >A d
166166 3> 2A O 1166161 161 >= e
166161 3K 2= P 1166116 162 >> Q
166116 3L 2> R 1166111 163 >K g
166111 3M 2K S 1161666 16A >L /
161666 A6 2L + 1161661 16= >M i
161661 A1 2M - 1161616 16> >A >
161616 A2 2A T 1161611 16K >B U
161611 A3 2B ; 1161166 16L >: l
161166 AA 2: V 1161161 16M >D m
161161 A= 2D W 1161116 116 >E n
161116 A> 2E % 1161111 111 >Q o
161111 AK 2Q 0 1116666 112 K6 *
116666 AL 36 6 1116661 113 K1 X
116661 AM 31 1 1116616 11A K2 r
116616 =6 32 4 1116611 11= K3 s
116611 =1 33 7 1116166 11> KA t
116166 =2 3A : 1116161 11K K= u
116161 =3 3= 5 1116116 11L K> (
116116 =A 3> 8 1116111 11M KK Y
116111 == 3K = 1111666 126 KL 9
111666 => 3L Z 1111661 121 KM @
111661 =K 3M [ 1111616 122 KA 3
111616 =L 3A : 1111611 123 KB \
111611 =M 3B 2 1111166 12A K: ]
111166 >6 3: ^ 1111161 12= KD _
111161 >1 3D < 1111116 12> KE `
111116 >2 3E a 1111111 12K KQ
111111 >3 3Q b 16666666 12L L6
1666666 >A A6 c
Programacin
Bibliograf8a&
o Mathews, John H.; Fink, Kurtis D. Mtodos Numricos con Matlab. Prentice Hall Madrid 2000 SBN:
84-8322-181-0
o Garca, Javier; Rodrguez, Jos; Brazales, Alfonso. ntroduccin al Matlab. Universitas (Universidad
Cientfica Universitaria) Crdoba, Argentina- 2002 SBN: 987-9406-06-8
o Etter, Delores M. Soluciones de problemas de ingeniera con Matlab - Prentice Hall 1998 SBN: 980-
17-0111-9.
Disponible en nternet&
Garca de Jaln, Javier. Aprenda ?atla! L.K como si estu#iera en primero. Escuela Tcnica
Superior de ngenieros ndustriales. Universidad Politcnica de Madrid. Agosto 2004
(http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab65/matlab65pro.pdf)
Aguilera Garca, Jos J. y otros. Fundamentos de ,nformtica. Coleccin Apuntes, Universidad de
Jan, 1997 (http://wwwdi.ujaen.es/asignaturas/fundTopo/TEMA1.pdf, ...TEMA2.pdf, .....etc.).
Cordn, Jos A. Curso de iniciaci'n a ?A5LA.. Dpto. de Matemticas, Estadstica y
Computacin (MATESCO) - Facultad de Ciencias
(http://personales.unican.es/cordonj/doctor98/curmat/index.html#tabla-contenidos)
Urea, Luis A.,y otros . Fundamentos de ,nformtica. 1999 Editorial Alfaomega. Ra-ma (citado en
http://www.mailxmail.com/curso/informatica/programacionestructurada/capitulo22.htm)
Direcciones .arias:
Sobre Visual Basic: http://mundovb.net/mundoc/
Sobre Programacin en distintos lenguajes: http://lawebdelprogramador.com/cursos/
Sobre ntegracin Numrica: http://usuarios.lycos.es/calculoint21/id39.htm
Sobre utilizacin de Matlab: http://internet-solutions.com.co/deacosta/matlab/Curmat1.html

Вам также может понравиться