Sei sulla pagina 1di 61

Programacin

Programacin Estructurada y Seudo


Cdigo
Programacin en entorno MatLab

Ing.

Eugenio Kolb

Ctedras: Informtica Bsica Informtica Aplicada


Carrera: Ingeniera Qumica
Facultad de Ciencias Exactas, Qumicas y Naturales (FCEQyN)
Universidad Nacional de Misiones (UNaM)
Posadas, Misiones Argentina
Noviembre de 2006

Programacin
Parte I

PROGRAMACIN ESTRUCTURADA GENERAL

I) Introduccin
La informacin y los datos transmitidos y almacenados por una computadora, en una primera 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 perforaciones en lugares predeterminados en tarjetas de cartn, o quemaduras en lugares establecidos en discos, u orientaciones determinadas de partculas de material magntico ubicadas en determinada 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 traduccin 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 elementos (256 combinaciones distintas posibles), se logr un cdigo superior, identificable por el
humano comn. Surgen all el cdigo Decimal y el cdigo ASCII (Anexo 1).
Durante la Primera Generacin de Computadoras, existan Programadores que usaban
tecnologa 1GL (First Generation Language: Lenguaje de Primera Generacin). 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 remunerada divisin de las tareas especializadas.
En esa distribucin del trabajo, los Programadores usaban un restringido set de ordenes e
instrucciones, escritos en Lenguaje de Mquina (ceros y unos).
Posteriormente, se incorporaron las definiciones Lenguajes de Bajo Nivel y de Alto Nivel: 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 2GL (Second Generation Language). El lenguaje de Segunda Generacin 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 binariamente). Se pueden incorporar comentarios (importantes para la documentacin). Y, empieza a
utilizarse un set restringido de instrucciones (STO, LOA, ADD, INP, MOV, END, etc.).
A continuacin, surgen los 3GL (Third Generation Language), lenguajes de Tercera Generacin, 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 instrucciones bsicas de las generaciones anteriores, agrupadas bajo un nombre), son lo ms semejante al habla humana, y hacen abstraccin del equipo en que se ejecutar o correr el programa. 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 fsicas obligadas, dependientes de la arquitectura fsica del ordenador).

Eugenio Kolb

Programacin
Se desarrollan distintos Idiomas, distintos Lenguajes para escribir las Instrucciones y los
Programas: Basic, Pascal. Cobol, C, Fortran, etc.
En esta tercera generacin, de manera simultnea, disminuyen los costos de las computadoras 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 generacin de informes, programas estandarizados especializados en tareas especficas, etc.); llev a la
formacin de una generacin de programadores: para utilizar una computadora se requeran conocimientos slidos en cuando al uso del sistema operativo, y, al menos, generales, de programacin.
En los 4GL (Fourth Generation Language), lenguajes de Cuarta Generacin, tambin
denominados lenguajes orientados a problemas especficos; se incluyen interfaces grficas, lenguajes de consulta de bases de datos, generadores de informes, mdulos pre-programados, generadores de formularios y aplicaciones, asistentes poderosos, etc. Importantes 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 5GL a ciertos lenguajes orientados a aplicaciones en inteligencia artificial, 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 Compiladores correspondientes a cada Lenguaje). El objetivo es llevar el cdigo al lenguaje de bajo nivel, comprensible por la mquina.
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 programacin ha tenido amplio inters, para luego decaer marcadamente, entre los usuarios comunes.
Sin embargo, muchos problemas en la Ingeniera 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 necesidad de desarrollar un Programa, y el momento en que el mismo ya puede ser utilizado sin
errores, de la siguiente manera:
A)

Descripcin del Problema

A)

Eleccin o Diseo del Algoritmo

B)

Codificacin (en un lenguaje que la computadora reconozca)

C)

Ingreso del Cdigo y Ejecucin del Programa en la computadora

D)

Correccin, pruebas y optimizacin del Programa

B)

Documentacin y mantenimiento del programa

A) El desarrollo de un Programa surge ante la existencia de un Problema. La descripcin


del problema es general, y se realiza usando terminologa comn. Se detallan los resultados buscados, 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

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 grfico 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. Para su elaboracin se siguen ciertas 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 Programacin Estructurada (que limitaba las secuencias de acciones a conjuntos y subconjuntos de las mismas, en cada caso con un claro Inicio y un claro Final), las restricciones 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 estructurada. Un ejemplo de ellos es el de los Diagramas N-S. son herramientas que favorecen la programacin estructurada y renen caractersticas grficas propias de diagramas de flujo y lingsticas 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 engorrosas tareas de re-dibujo ante cada modificacin.

La Programacin Estructurada 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 trminos
cotidianos del idioma comn, si bien no compilable (y por lo tanto sin la rigidez distractiva de las
exigencias de sintaxis), result evidente. En ese momento surge el Seudo Cdigo o Seudo
Lenguaje (seudo = falso). No es realmente un lenguaje sino una imitacin 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

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 casos, modificaciones y adaptaciones menores de los mismos son suficientes para continuar con las
siguientes etapas.

III) Programacin con Seudo Cdigo


Luego de la Descripcin 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 Diseo 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 (Flow Chart) se han utilizado masivamente durante el desarrollo de las
primeras generaciones de computadoras. Con el surgimiento de lenguajes de alto nivel, se empiezan 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 programas solo por ellos comprendidos) Surgen mtodos estructurados de diagramacin: se ha citado, por ejemplo, el diagrama N-S. Y, se empieza a usar el Seudo Cdigo (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 redibujar la secuencia, utiliza el lenguaje cotidiano en el idioma propio del programador: mostrar, ingresar, desde, hasta, si (condicional), mientras, entonces, etc. Las estructuras de programacin 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 Lenguaje de Programacin. El resto de la Parte I 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 lenguaje que la
computadora reconozca), Ingreso del Cdigo y Ejecucin del Programa en la computadora,
Correccin, pruebas y optimizacin del Programa; y Documentacin y mantenimiento del
programa), necesariamente deben realizarse en el Entorno de Trabajo de un Lenguaje de
Programacin. En la Parte II de este trabajo, describiremos las principales herramientas y conceptos que permiten Programar o, directamente, usar los poderosos recursos del MatLab.

Entrada de
Datos

Partes de un Programa:
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.

Proceso

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 Instrucciones o Sentencias, Ordenes, etc. Se
representan por Estructuras

Eugenio Kolb

Salida de
Resultados

Programacin

Estructuras
Las estructuras sencillas o simples describen una sucesin de Acciones Simples (A1, A2,
...). Por ejemplo: leer datos, mostrar resultados, ingresar un dato, realizar un clculo directo,
etc. Esta Accin en general se puede describir en una sola lnea de programa, pero no necesariamente. 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. Por
ejemplo: Si se cumple una Condicin dada, realizar A2; A3; A6; pero en caso contrario realizar
A5; A6;. Se denominan Estructuras de Seleccin (encontrndose muchos sinnimos: Transferencia Condicional, Control de Flujo, etc.).
b) Cuando una sucesin de una o ms Acciones puede realizarse un nmero de veces distinto a uno (o, incluso, puede no realizarse), dependiendo de una condicin explicitada en el programa. Ejemplo: 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 estructuras de Iteracin, encontrndose en la bibliografa diversos otros trminos: ciclos, bucles,
procesos repetitivos, etc.
En el Cuadro I se resumen los 3 tipos globales de estructuras de Programacin en Seudo
Cdigo, con sus distintas variantes. En el Cuadro II, la traduccin de las mismas a Lenguaje
MatLab.

Eugenio Kolb

Estructuras de Secuenciacin

(las A1,
A2, ...Ai; son comandos o instrucciones simples):
Al; A2; A3;
o

Estructuras de Entrada de Datos: los datos se


almacenan en Variables, permaneciendo en la
memoria
* Asignacin directa: los datos,
numricos, lgicos o alfanumricos, pueden ser
valores o expresiones

A1;
A2;

variable expresin

A3;

Estructuras de Seleccin:

(las A1,
A2, ...Ai; son comandos o instrucciones simples,
o conjuntos de ellos):
SI condicin ENTONCES
Al;
SINO
A2;
FIN SI
Variantes:
SI condicin ENTONCES
Al;
FIN SI
o

* Ingreso por teclado: los datos se


ingresan durante la ejecucin del programa, tras
una pausa.

variable INGRESAR(Mensaje)
* Lectura desde un archivo: los datos se
leen de un archivo externo al programa, y se ubican
en variables.

LEER variable/s
Estructuras de Salida de Resultados:
permiten ver, imprimir, o grabar en archivos, los
resultados obtenidos de clculos.
* Impresin: salida por pantalla o
impresora de mensajes y resultados.

ESCRIBIR (mensajes; variables)

SEGN exp
conjunto de valores1: Al;
conjunto de valores2: A2;

conjunto de valoresn: An;


SINO
: An+1;
FIN SEGN

Cuadro 1

* Visualizacin: salida por pantalla de


mensajes y resultados.

MOSTRAR (mensajes; variables)


* Grabacin: grabacin de resultados en
un archivo externo al programa

GRABAR variable/s

Estructuras de Iteracin:

(las A1,
A2, ...Ai; son comandos o instrucciones simples,
o conjuntos de ellos):
MIENTRAS condicin HACER
Al;
FIN MIENTRAS
A este tipo de iteracin se la conoce como bucle
tipo Mientras
Variantes:
* Iteracin Condicional
Se la conoce como bucle tipo Hasta:
REPETIR
Al;
HASTA QUE condicin;
que equivale a:
Al;
MIENTRAS NO condicin HACER
Al;
FIN MIENTRAS
* Iteracin No Condicional (tipo FOR...NEXT)
HACER n VECES (para i de 1 a n)
Al;
FIN HACER
que equivale a:
i 1;
MIENTRAS i < n HACER
Al;
i i+1;
FIN MIENTRAS

Programacin

Cuadro 1 Cuadro 1

Cuadro 2

Estructuras de Secuenciacin
Asignacin:
variable = expresin/conj. de datos;

Ingreso por teclado:

Estructuras de Seleccin
if condicin
A1;

else
A2;

variable=input(mensaje [,s]);

Lectura de archivo:

end
if condicin
A1;

load archivo[, variable/s];

end

Impresin: (en pantalla, en archivo, en


impresora,etc.)

if condicin1
A1;

fprintf([destino,]formato/mensaje[,

elseif condicin2

variables]);

A2;

Visualizacin (de una variable, sin el nombre):

else
A3;

disp(variable);

end

Grabacin:
save archivo[, variable/s];

switch expresin
case expresion1
A1;

case expresion2

Estructuras de Iteracin

A2;

case {expresion3, expresion4,


.}

while condicin
A1;
end

A3;

.......
otherwise
An+1;

for variable=ValorInicial:Incremento:ValorFinal
A1;
end
Instrucciones complementarias:
break: 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)

end
Instrucciones complementarias:
try .... catch . end: permiten gestionar
errores. Se ejecuta el conjunto de
instrucciones1, y solo en el caso en que
ocurra un error, pasa a ejecutarse el
conjunto de instrucciones2.

try
A1;

catch
A2;

end

Eugenio Kolb

Programacin
Archivos de Datos y Variables
Archivos
Los datos se almacenan, en la Memoria Auxiliar, en Archivos de Datos. Se ubican en
Campos cuyos agrupamientos se denominan Registros. As, el Registro de una persona estar
compuesto por los Campos nombre, edad, sexo, domicilio, etc.
En general, la manera de almacenar la informacin origina 2 tipos de Archivos:
a) Archivos Secuenciales: en los cuales el almacenamiento de la informacin se
realiza de la siguiente manera: campo 1, separador, campo 2, separador, campo 3, separador, ... . Para usar
la estructura LEER, se usan tantas variables como campos compongan el registro:
LEER variable 1, variable 2, variable 3

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 variables, y se posiciona en el
cuarto, esperando cualquier siguiente lectura. Y as, sucesivamente.
La instruccin opuesta se escribe, tambin, conociendo la estructura del archivo:
GRABAR variable 1, variable 2, variable 3

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: 0, Fin, 0. De esa manera, se podr usar la estructura MIENTRAS
para ...LEER ...MIENTRAS .... variable 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 deben
leer antes todos los anteriores.
b) Archivos de Acceso Directo: 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:
LEER N de Registro, variable 1, variable 2, variable 3
GRABAR N de Registro, variable 1, variable 2, variable 3

En algn momento (cuando la capacidad de almacenamiento era muy escasa),


podra hablarse de la ahora relativa desventaja de no utilizar todos los bytes disponibles. 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:
grabar en la posicin 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 Datos
Eugenio Kolb

Programacin
Los archivos de los tipos citados anteriormente se organizan, en general, en estructuras
mayores. Sintticamente, las mismas se organizan en una o ms Tablas (equivalentes a
aquellos): Esas organizaciones de la informacin se denominan Bases de Datos. Cada Tabla est
compuesta por Registros (Records) y Campos (Fields). El siguiente es un simple ejemplo de
una Tabla simple:
Tabla: Tabla1
Campo 1

Nombre
Jose
Ana Maria
Rosa
Pedro

Registro 1
Registro 2
Registro 3
Registro 4

Campo 2

Campo 3

Apellido
Perez
Garcia
Ayala
Pereira

CodigodeCarrera
501
503
501
502

Campo 4

Sexo
M
F
F
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.
CodigoCarrera
501
502
503

Carrera
Ingeniera Qumica
Bioqumica
Gentica

Existen Lenguajes orientados al manejo de Bases de Datos, tales como el Lenguaje


Estructurado de Consultas (SQL), que permiten generar Tablas Virtuales en el procesamiento de
los datos. Por ejemplo:
SELECCIONAR Nombre, Apellido, Carrera DESDE Tabla1, Tabla2 DONDE
CodigodeCarrera=CodigoCarrera Y Sexo=M

. genera una Tabla Virtual:


Nombre
Jose
Pedro

Apellido
Perez
Pereira

Carrera
Ingeniera Qumica
Bioqumica

Variables
Los datos se almacenan, en la Memoria Principal, en variables. En general, se pueden
clasificar en 2 grandes grupos: numricas y alfanumricas (strings o cadenas de caracteres).
Pueden ser simples (escalares: almacenan un solo dato en un momento dado), o
mltiples (vectores 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:
A

Eugenio Kolb

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 personalizados de variables. As, se puede
definir una variable llamada ficha que contenga los datos nombre, edad, sexo, categora.
Entonces, en ficha(3).edad estara la edad del 4 empleado.
Cuando las variables son numricas, se las puede sub-clasificar: enteras, de precisin
simple, de precisin doble, etc.

Subprogramas y Funciones
Cuando se tiene un conjunto de acciones de uso general y frecuente, se las puede
organizar como procedimientos parametrizados:
a) como Subprogramas( o Subrutinas o Procedimientos),
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).
Para llamar a un Subprograma se usa una instruccin completa. Para llamar a una
Funcin, se usa parte de una expresin.
En general, podemos escribir ambos tipos de procedimientos de la siguiente manera:
Subprograma
SUBPROGRAMA nombre(variables/argumentos de Entrada)
A1;
A2;
.....
FIN SUBPROGRAMA

Funcin
FUNCIN variable/s de salida nombre (variables/argumentos de Entrada)
A1;
A2;
.....
FIN FUNCIN

Ejemplo: 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 maximo2, que lleve a la resolucin del problema.
a) Usando Subprogramas
SUBPROGRAMA maximo2(a,b)
Eugenio Kolb

10

Programacin
SI a =>b ENTONCES
m a;
SINO
m b;
FIN SI
MOSTRAR(Maximo: , m)
FIN SUBPROGRAMA

b) Usando Funciones
FUNCIN m maximo2(a,b)
SI a =>b ENTONCES
m a;
SINO
m b;
FIN SI
FIN FUNCIN

Nota 1: en ambos casos, se puede invocar al procedimiento maximo2 desde cualquier


parte del programa, o desde el modo de comandos.
En el caso a) se escribira de alguna de las siguientes formas (como instruccin 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);
MOSTRAR 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 valores 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.
Nota 2: en ambos casos, las variables a, b y m tienen vida solo durante el transcurso del
Procedimiento (Subprograma o Funcin). Luego, dejan de existir. Esto suele producir confusin.
Para mejor comprensin:
1) Al escribir la Funcin o Subprograma, se usan variables o expresiones
(variables/argumentos de Entrada), en el encabezado, que indican la cantidad y tipo de datos
necesarios para resolver 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 (variables
de Salida ), las que indican cantidad y tipo de resultados
Eugenio Kolb

11

Programacin
2) Una vez escrita la Funcin, no nos interesan los nombres de las variables
internas que se utilizaron, sino el orden, cantidad y tipo de datos a enviar a la misma; y el orden,
cantidad y tipo de resultados que obtenemos.
Nota 3: Queda un caso intermedio, sin embargo. En el caso a), si la variable m estuviese
declarada como Global, ese valor sigue vigente (no muere), y puede ser usado luego, tal como
lo hicimos en el caso b).

Ejemplos de utilizacin de Seudo Cdigo


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.

b) 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.

b)

a)
sueldo INGRESAR(Ingrese Sueldo );
categoria INGRESAR(Ingrese Categoria);
SI categoria<10 ENTONCES
sueldo sueldo*1.2;
FIN SI
MOSTRAR(El nuevo sueldo es:, sueldo)

sueldo INGRESAR(Ingrese Sueldo );


categoria INGRESAR(Ingrese Categoria);
SI categoria<10 ENTONCES
sueldo sueldo*1.3;
SINO
sueldo sueldo*1.2;
FIN SI
MOSTRAR(El nuevo sueldo es:, sueldo)

c)
sueldo INGRESAR(Ingrese Sueldo );
categoria INGRESAR(Ingrese Categoria);
SEGN categoria
1<=categoria<=5 : sueldo sueldo*1,2;
6<=categoria<=10 : sueldo sueldo*1,15;
11<=categoria<=15 : sueldo sueldo*1,1;
16<=categoria<=20 : sueldo sueldo*1,05;
SINO
MOSTRAR(La categoria no es correcta);
FIN SEGN
MOSTRAR(El nuevo sueldo es:, sueldo)

2) Ampliar el problema anterior, punto c, permitiendo el ingreso de varios registros, sin


necesidad de volver a ejecutar el programa
sueldo INGRESAR(Ingrese Sueldo (para finalizar ingrese 0));
MIENTRAS NO sueldo=0 HACER
Categoria INGRESAR(Ingrese Categoria);
Eugenio Kolb

12

Programacin
SEGN categoria
1<=categoria<=5 : sueldo sueldo*1,2;
6<=categoria<=10 : sueldo sueldo*1,15;
11<=categoria<=15 : sueldo sueldo*1,1;
16<=categoria<=20 : sueldo sueldo*1,05;
SINO
MOSTRAR(La categoria no es correcta);
FIN SINO
Sueldo INGRESAR(Ingrese Sueldo (para finalizar ingrese 0));
FIN MIENTRAS
MOSTRAR(El nuevo sueldo es:, sueldo)
Nota: 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. Indicando 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.
0 ; c1 0 ; c2 0; c3 0; c 0;
LEER valor;
MIENTRAS NO valor = -1 HACER
c c + 1;
SEGN valor
0 : c0 c0 + 1;
1 a 12 : c1 c1 + 1;
13 a 24 : c2 c2 + 1;
25 a 36 : c3 c3 + 1;
FIN SEGN
LEER valor;
FIN MIENTRAS
MOSTRAR(Total de valores analizados: , c);
MOSTRAR(Total de valores de la 1, docena: , c1);
MOSTRAR(Total de valores de la 2, docena: , c2);
MOSTRAR(Total de valores de la 3, docena: , c3);
MOSTRAR(Total de valores iguales a 0: , c0);

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:
PARA i de 0 a 36
c(i)=0
FIN PARA
LEER valor;
MIENTRAS NO valor = -1 HACER
c(valor) c(valor) + 1;
LEER valor;
FIN MIENTRAS
PARA i de 0 a 36
Eugenio Kolb

13

Programacin
MOSTRAR(El nmero , i , sali , c(i) , veces);
FIN PARA

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 0
n INGRESAR(Ingrese valor (para finalizar = 0);
maximo n;
minimo n;
MIENTRAS n<>0 HACER
c c + 1;
SI n>maximo ENTONCES
maximo n;
posmaximo c;
FIN SI
SI n<minimo ENTONCES
minimo n;
posminimo c;
FIN SI
INGRESAR(Ingrese valor (para finalizar = 0);
FIN MIENTRAS
SI c>0 ENTONCES
MOSTRAR(N de datos ingresados: , c);
MOSTRAR(El mximo es:,maximo);
MOSTRAR(Posicin del mximo: ,posmaximo);
MOSTRAR(El mximo es:,maximo);
MOSTRAR(El mnimo es:, minimo);
MOSTRAR(Posicin del mnimo:, posminimo);
SINO
MOSTRAR(No se ingresaron valores);
FIN SI

Eugenio Kolb

14

Programacin
Parte II

MatLab
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 trabajo


Al ingresar a Matlab, con la opcin del men View, se pueden seleccionar las ventanas que
permanecern visibles hasta que se diga lo contrario:

a) Ventana de Comandos (Command Window): 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 help (ayuda rpida en modo texto), o helpwin (ms lenta,
pero con formato Windows, con hipervnculos, etc.). La ayuda sobre un comando dado se
obtiene con help comando o helpwin comando.

b) Launch Pad: presenta los mdulos y componentes de Matlab actualmente instalados


(Help, Demos, etc.)

c) Espacio de Trabajo (Workspace): presenta un listado de todas las variables definidas en


la sesin. Con View/Workspace View Optiones se elige la manera de ver esa informacin.

d) Command History: muestra los ltimos comandos ejecutados en la Ventana de


Comandos. Cualquiera de ellos se puede volver a ejecutar con doble click. Con el botn
derecho aparece un men contextual con las opciones disponibles.

e) Directorio Actual (Current Directory): Permite establecer el Directorio Actual (donde se


grabar automticamente un archivo .m, por ejemplo). Con View/Current Directory Filter se
establece el tipo de archivos que se ver en el listado. Haciendo doble click sobre un
archivo .m, se lo abre.
Debe diferenciarse del Search Path (camino de bsqueda, establecido con File/Set Path),
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:

f) Ventana de Edicin y Ejecucin de Programas Matlab (archivos .m). Al ejecutar


File/New, o File/Load y seleccionar archivos .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.

g) Ventana de Visualizacin y Edicin de Grficos (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.

Archivos de Configuracin, Autoejecutables y Temporarios


Al establecer un Search Path por defecto, el mismo queda registrado en el archivo
toolbox \local \matlabrc.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 quit. En ese momento, si existe en el Search
Path un archivo llamado finish.m, Matlab lo ejecuta.
Al ingresar a Matlab, se inicia una Sesin de Trabajo. Con el comando save, en el directorio
actual se crea un archivo binario 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 save nombredearchivo, se guarda con otro nombre, pero con todas las variables. Con
save nombredearchivo x y z, se guardan solo las variables especificadas.
Con la opcin save nombredearchivo ascii, se guarda en formato ASCII la informacin,
con 8 dgitos, pero no los nombres de las variables: se lee con load nombredearchivo ascii,
almacenndose toda la informacin en una sola variable con el mismo nombre que el archivo
(error, si no todas las filas tienen el mismo nmero de elementos). Con la opcin save
nombredearchivo ascii double tab, los valores se almacenan con 16 dgitos, separados por
Tabuladores.
Con la opcin append, 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).

Comandos:
Generales:
demo: programa de demostracin MatLab Expo
help: manual de ayuda (Help Comando, para un comando dado)
control + C: para abortar un programa
De Entorno de Trabajo:
clear: borra todas las Variables de la memoria
Eugenio Kolb

16

Programacin
who: lista las matrices definidas
whos: lista las matrices definidas y sus tamaos
De Visualizacin:
clc: borra la Ventana de Comandos.
clf: borra la Ventana de Grficos.

Ayuda de MatLab
En la Ventana de Comandos, se puede obtener informacin escribiendo Help (para ver
ayuda en formato texto en la misma Ventana), o Helpwin (para ejecutar el Asistente, que permite
vnculos a herramientas relacionadas).
MatLab presenta el ingreso a loa distintos temas con el siguiente men (accesible con help o
helpwin). Si se desea ingresar directamente a un tema, se escribe Helpwin vnculo:
Vnculo
matlab\general
matlab\ops
matlab\lang
matlab\elmat
matlab\elfun
matlab\specfun
matlab\matfun
matlab\datafun
matlab\audio
matlab\polyfun
matlab\funfun
matlab\sparfun
matlab\graph2d
matlab\graph3d
matlab\specgraph
matlab\graphics
matlab\uitools
matlab\strfun
matlab\iofun
matlab\timefun
matlab\datatypes
matlab\verctrl
matlab\winfun
matlab\demos
toolbox\local
toolbox\compiler
MATLAB\work

Tema
Comandos de Propsito General
Operadores y Caracteres Especiales
Lenguaje de Programacin MatLab
Matrices elementales y manipulacin de matrices
Funciones matemticas elementales
Funciones matemticas especializadas
Funciones Matriciales: lgebra Lineal Numrica
Anlisis de Datos y Transformadas de Fourier
Soporte de Audio
Polinomios e Interpolacin
Funciones de Funciones y Resolucin de Ecuaciones Diferenciales Ordinarias
(ODE).
Matrices Dispersas (Sparse matrices).
Grficos de 2 Dimensiones
Grficos de 3 Dimensiones
Grficos Especiales
Manejo de Grficos
Herramientas grficas de interface de usuario.
Cadenas de caracteres
Input/output de Archivos
Fechas y Horas.
Tipos y Estructura de Datos
Version control.
Archivos de Interface Windows (DDE/ActiveX)
Ejemplos y Demostraciones.
Preferencias.
MATLAB Compiler

Formatos de Ficheros. (matlab\iofun\fileformats.m)


Formatos de Texto
MAT
CSV
DLM
TAB

Espacio de Trabajo MATLAB


Nmeros separados por comas
Texto delimitado
Texto separado por tabuladores

Comando
load
csvread
dlmread
dlmread

Eugenio Kolb

Retorno
Variables en archivos.
Arreglo doble
Arreglo doble
Arreglo doble.

17

Programacin
Formatos de Hojas de Clculos
XLS
WK1

Comando
xlsread
wk1read

Excel
Lotus 123

Retorno
Arreglo doble y arreglo de celdas.
Arreglo doble y arreglo de celdas..

Formato de Animaciones
AVI

Comando
aviread

Movie

Retorno
Animacin MatLab.

Formatos de Imgenes
TIFF
PNG
HDF
BMP
JPEG
GIF
PCX
XWD
CUR
ICO

TIFF imagen
PNG imagen
HDF imagen
BMP imagen
JPEG imagen
GIF imagen
PCX imagen
XWD imagen
Cursor imagen
Icon imagen

Comando
imread
imread
imread
imread
imread
imread
imread
imread
imread
imread

Retorno
Imgenes de color verdadero, escala de grises o indexadas
Imgenes de color verdadero, escala de grises o indexadas
Imgenes de color verdadero o indexadas
Imgenes de color verdadero o indexadas.
Imgenes de color verdadero o escala de grises.
Imgenes inexadas
Imgenes inexadas
Imgenes inexadas
Imgenes inexadas
Imgenes inexadas

Archivos de sonido
AU
WAV

NeXT/Sun sound
Microsoft Wave sound

Comando
auread
wavread

Retorno
Sound data and sample rate
Sound data and sample rate

III) Variables y Datos en MatLab


Conceptualmente, todas las variables son matrices, incluso si contienen un solo dato
(escalar).
Los nombres de las funciones y variables deben comenzar con una letra. MatLab recuerda
los primeros 19 caracteres. Las funciones van en minsculas (aunque el comando casesen
permite una ambivalencia). La forma general de asignacin de datos es la siguiente:

variable=expresin
Si se escribe solo expresin, la misma se almacena en la variable ans
Escalar: [3.5]
Vector: [1,5,3,1]

Matriz: [3.5, 3.1;2,1.5]

Matriz de una fila y una columna


Matriz de una fila y varias columnas (vector fila)

3.5
1 5 3

Matriz de 2 filas y 2 columnas

3.5
2

El resultado de la ltima operacin se almacena, por defecto, en la variable ans.

Asignacin de Datos
Eugenio Kolb

18

3.1
1.5

Programacin

a) Listas explcitas:
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 corchetes:
1
4
7

Ejemplo: A=[1 2 3;4 5 6;7 8 9]

2
5
8

3
6
9

Separadores de Columnas: , (coma), o espacio en blanco


Separadores de Filas: ; (punto y coma), o retorno de carro
Al dar entrada a la lnea de asignacin, se imprimen los valores, salvo que se finalice con ; .
Toda lnea que termina con ,... (una coma y 3 puntos), contina en la siguiente.
b) Operador de 2 puntos (:): permite crear matrices nuevas.

Crear Vectores a partir de una Matriz: al hacer referencia a toda una fila o toda una
columna.:
-1
1
1
0

0
1
-1
0

0
0
0
2

C = [D=C(:)

1,0,0;1,1,0;1,-1,0;0,0,2];

X = C(:,2);

-1
1
1
0
0
1
-1
0
0
0
0
2

0
1
-1
0

Generacin de Matrices nuevas conteniendo Series: para generar automticamente los


valores desde un valor inicial, con un incremento (por defecto,1), hasta un valor final.:

X = 1:0.5:4.5

1.5 2

2.5 3

3.5 4

X = 1:8;

4.5

c) Sub-Matrices: a partir de una Matriz A existente, generar una nueva, B, utilizando un


Rango de A. As, B = A(i:j,k:m) asigna a B los valores de A comprendidos entre las Filas i y j, y
las Columnas k y m.
Ejemplos:
A(3,:)

La tercera fila y todas las columnas


Eugenio Kolb

19

Programacin
A(:,2:3)

Todas las filas, entre las columnas 2 y 3

d) Otras automatizaciones:

Matriz vaca: A = [ ]

Transposicin de Matrices (conversin de filas a columnas, y viceversa): B = A

Matriz con Ceros: B = zeros(3,2)

Matriz con Unos: B = ones(3,2)

Matriz Identidad: con 1 en la diagonal y 0 en las otras posiciones. Ejemplos:

1
0
0

A = eye(3)

0
1
0

0
0
1

A = eye(3,2)

1
0
0

0
1
0

Nota: para conocer el Tamao de una matriz , se usa el comando size(A). El tamao de un vector
se obtiene con length(A), equivalente a max(size(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.

Operadores Matemticos

A=

B=

1
0
2

2
4
0

3
0
1

0
0
3

2
0
0

3
7
0

C=A+B

1
0
5

4
4
0

6
7
1

C=A.*B

C=A-B

1
0
-1

0
4
0

0
-7
1

C=A./B

0
0
6

4
0
0

9
0
0

Warning: Divide by zero


Inf 1.0000 1.0000
NaN
Inf
0
0.6667
NaN
Inf

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.

Operadores Lgicos: las 2 matrices deben ser de la misma dimensin o una debe
ser un escalar
"Y"
C=A&B

0
1

0
0

0
0

"O"
C=A|B

1's donde A y B (ambos) no son nulos, 0s el resto

1's donde A o B (aunque sea uno de ellos) no son nulos, 0s el


resto
1

1
Eugenio Kolb

20

Programacin
0
1

1
0

1
1

"NO"

1's donde A o B (aunque sea uno de ellos) no son no nulos, 0s


el resto

C=A~=B

1
0
1

0
1
0

0
1
1

Operaciones con Matrices


Producto Punto:
a) Escalar que surge de sumar los productos de los valores ubicados en posiciones
correspondientes de 2 vectores:
N

C = A.B =

i= 1

A=

C=dot(A,B)

ai bi
-1

B=

-2

-7
(4x(-2) + (-1)x5 + 3x2)

b) Vector que surge de calcular el Producto Punto de las Columnas de cada Matriz:
A=

C=dot(A,B)

1
3

2
4

26

44

(1x5 + 3x7
es decir ( 26

B=

5
7

6
8

5
7

6
8

2x6 + 4x8)
44
)

Multiplicacin de Matrices
N

Ci,j =

k=1

ai ,k bk , j

A=

1
3

2
4

C =A*B

19
43

22
50

Es decir (1*5 + 2*7


(3x5 + 4x7

B=

1*6 + 2*8)
3x6 + 4x8)

Para saber si existe C, se pueden escribir los tamaos de A y B uno al lado del otro: si los 2 valores
interiores son iguales, existe C, con un tamao definido por los valores exteriores. As, si tenemos A(2,3) y
B(3,3):

2x3

3x3

C=A*B existe, y su tamao ser C(2,3)


Eugenio Kolb

21

Programacin

Potencias de Matrices
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 A2 es A*A, A debe ser
cuadrada. Debe recordarse que si la expresin fuese A.2 , estaramos hablando simplemente
sobre la elevacin al cuadrado de cada elemento escalar de la matriz.
Funciones Matriciales
De utilidad en lgebra Lineal, existe una serie de funciones:
Matriz Inversa
La inversa de una matriz cuadrada A es la matriz A-1 para la cual los productos de
matrices A. A y A-1.A son iguales a la matriz identidad.
-1

A=

2
4

1
3

B=A^(-1)

1.5000 -0.5000 A*(A^(-1)


-2.0000 1.0000

1
0

0
1

A y B son inversas una de la otra: A=B-1 y B=A-1, y AB=BA.

Una matriz singular o mal condicionada, no tiene inversa. Este concepto est
relacionadocon un sistema de ecuaciones que no son independientes entre s.
El rango de una matriz es el nmero de ecuaciones independientes representadas
por las filas de la matriz: si el rango de una matriz es igual a su nmero de filas, sta no es
singular, y existe su inversa.
Se usan 2 funciones:
-

rank(A): calcula el rango de la matriz

inv(A): calcula el inverso de la matriz

Datos Alfanumricos
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.
Ejemplos:
H

' ; 'Buen da']

- a = ['Hola' , 'Buen da']


- a = ['Hola

- a = 'Hola'
a

En este ltimo caso, ambas cadenas deben tener la misma longitud (completando con
espacios en blanco), ya que en caso contrario se produce un error. Para que el rellenado sea
automtico, se usa la funcin char:
- a =char('Hola' ; 'Buen da')
Eugenio Kolb

22

Programacin

IV) Estructuras de Programacin


A) Estructuras de Secuenciacin
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 III):
Agregado datos a una matriz (matrices numricas y alfanumricas)
Caso 1: agregar filas y/o columnas a una matriz de nmeros
1
4

2
5
1
4
7

1
4

2
5

n=[1,2,3;4,5,6] -

3
6
2
5
8

3
6
9

3
6

7
8

a) m = [n ; [7,8,9]]

b) m= [n , [7,8]]

Caso 2: agregar filas y/o columnas a una matriz alfanumrica. Conversin de datos.
Si a = [Hola]

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

Programacin
char(65)
A
str2num(1000)/2
500
Ver: hex2num, int2str, sprintf, dec2hex, bin2dec, dec2bin, str2double, etc, etc. (helpwin
matlab\strfun)
Otros tipos de datos en MatLab
A) Arreglos de Celdas (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]}
c(2) = {Hola}
c(3)={5}

en c(1) se carga una matriz numrica de 2x2


en c(2) se carga una matriz de 4 datos (caracteres).
en c(3) se carga un escalar numrico
1
3

2
4

H o l a 5

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
d(2).Categoria=12
un registro.

500

se crea, modificando la estructura, un nuevo campo y se agrega


Jose Perez

500
12

C) Hipermatrices: son matrices de 3 o ms dimensiones


b) Visualizacin de Datos
b-1) Usando 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 %e , %f ,
y %g indican cmo se vern los valores numricos : notacin exponencial, notacin de punto fijo o
decimal, o el ms corto de los 2. Si se agrega %n1.n2f podemos adems de definir el nmero de
dgitos enteros y decimales a visualizar. La cadena \n indica hasta donde se visualizar la lnea: el
resto pasa a la siguiente lnea.
Si se hace [variable] = sprintf(formato, variable/s), se obtiene el mismo resultado, pero
asignndolo a una variable.
Ejemplo: (en la Ventana de Comandos):
Se ingresa, asignndose los datos a la matriz x
Eugenio Kolb

24

Programacin
>> x=[2 5 ; 3.1 4.8]
x=

Se escribe

2.0000
3.1000

5.0000
4.8000

Se visualiza en pantalla, ya que no se puso ;


al final de la lnea anterior

>> fprintf('Los valores de x son: %f , %1.3f y %2.2f , ademas de %1.2e \n',x)


Se visualiza

Los valores de x son: 2.000000 , 3.100 y 5.00 , adems de 4.80e+000

Nota: observar que los datos se presentan o leen columna a columna, pese a cargarse la matriz fila por
fila.

b-2) Usando 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) Usando formularios de interface grfica:


msgbox('Peticin', 'Ttulo', 'Icono', 'Modo')
Icono: puede ser 'none' (ninguno, valor por defecto), 'error', 'help'
(ayuda), '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 Datos 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

Programacin
Ejemplo: (en la Ventana de Comandos):
>> Z=input('Ingrese los Datos entre Corchetes:')
Ingrese los Datos entre Corchetes: [1 2 ; 3 4]
1
3

2
4

Nota: Z=input(Ingrese 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).
Ejemplo:
Peticion={'Nombre'; 'Edad'; 'Observaciones'}
NumerodeLineas=[1,45;1,8;3,45]
ValoresporDefecto={''; ''; 'Sin comentarios'}
Variable=inputdlg(Peticion, 'Ficha de Datos', NumerodeLineas, ValoresporDefecto, 'on')

Variable =
'Jos Perez'
Variable(1)
'31'
Variable(1)
'Sin comentarios' Variable(1)

c-3) Usando questdlg:


Opcion=questdlg('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).
Ejemplo:

Eugenio Kolb

26

Programacin
Opcion=questdlg('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) Lectura de Archivo
load archivo, variables
En esta versin (simplificada), lee del archivo indicado, las variables grabadas con save.
e) Grabacin en Archivo
save archivo, variables
Graba las variables especificadas en un archivo. Si no se especifican, graba todas las vigentes en
el espacio de trabajo.
Resumen de operaciones de Lectura y Grabacin de datos en Matlab
csvwrite (comma_separated_values): graba en un archivo valores separados por
comas. As, csvwrite(NOMBREDEARCHIVO,M) graba una matriz M en el archivo llamado
NOMBREDEARCHIVO (por defecto, ubicado en c:\matlab\work), los datos numricos 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(NOMBREDEARCHIVO,M,f,c), se graba en la matriz que es el archivo, a partir
de la fila f y columna c del archivo (f y c empiezan a numerarse desde 0):
M=[1 2 3; 4 5 6];csvwrite('datos1',M,2,2)

,,,,
,,,,
,,1,2,3
,,4,5,6

csvread: csvread(NOMBREDEARCHIVO) lee de un archivo datos numricos separados por


comas. Con csvread(NOMBREDEARCHIVO, f, c) se lee a partir de fila f y columna c.
Ejemplo:
M=[1 2 3 4; 5 6 7 8; 9 10 11 12];csvwrite('datos1',M,1,1)
N= csvread('datos1',1,3)

1
5
9

2
6
10

3 4
7 8
11 12

3 4
7 8
11 12

dlmwrite: csvwrite(NOMBREDEARCHIVO,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

Programacin
dlmread: permite leer un archivo grabado con dlmwrite
M=[1 2 3; 4 5 'u'];dlmwrite('datos4',M, '-')
N=dlmread('datos4','-')
xlsread: permite leer datos grabados en una hoja de Excel.
A = xlsread('NombredeArchivo')

devuelve los valores numricos de la primera hoja del libro.

[A, B] = xlsread('NombredeArchivo',NombredeHoja)

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 nmero).
Save: graba las variables del Espacio de Trabajo al disco.
save NombredeArchivo: graba todas las variables a un archivo binario .mat (por defecto).
Se escribe con o sin comillas.
Save NombredeArchivo X: graba solo X
Save NombredeArchivo X Y Z: graba X, Y y Z. Se pueden usar caracteres comodn (*).
Opciones ASCII:
:
save ... ASCII: usa formato ASCII de 8 dgitos en vez de binario.
save ... ASCIIDOUBLE: usa formato ASCII de 16 dgitos.
save ... ASCIITABS: separa los datos con tabuladores.
save ... ASCII-DOUBLETABS :formato de datos de 16 dgitos, separados por comas..
Opciones MAT:
save ... APPEND: 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 Seleccin
Transferencia Condicional Simple

.......An; ....
end

a) Caso 1:

d) Caso 4: Gestin de Errores

if condicin
.......A1; A2;....
else
.......A3; A4;....
end

Permiten gestionar errores. Se ejecuta el


conjunto de acciones A1; A2; ...etc.; y solo en
el caso en que ocurra un error, pasa a
ejecutarse el conjunto de acciones A3; A4 .
try

b) Caso 2:

.......A1; A2;....
catch
.......A3; A4;....
end

If condicin1
.......A1; A2;....
elseif condicin2
.......A3; A4;....
else
.......A5; A6;....
end

Ejemplos:

Si se pregunta si A>B y C=0, se


tienen en la condicin los 2 tipos de
operadores: los Relacionales (< , <=, >, >=,
== (igual), ~= (distinto)), y los Lgicos (&
(y), | (o) y ~ (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 funcin isequal(A,B), si las 2
matrices son iguales, devuelve un 1 si A y B
son idnticas, y 0 en caso contrario.
Transferencia Condicional Mltiple
c) Caso 3:
Segn expresin (un nmero escalar
o una cadena de caracteres), se ejecutan
distintos conjunto de instrucciones
switch expresin
case expresion1
.......A1; A2;....
case expresion2
.......A3; A4;....
case {expresion3, expresion4, .}
.......A5; A6;....
otherwise
Eugenio Kolb

% Calculo de la temperatura de un reactor (caso


1)
% -----------------------------------------------% T = PxV/1.7
% Condiciones: P no debe superar 5
clear;
clc;
P=input('Ingrese Presion:');
V=input('Ingrese 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('Ingrese Presion:');
V=input('Ingrese 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')
29

Programacin
end
end

C) Estructuras de Iteracin
a) Estructura Mientras : el bucle termina
cuando deja de cumplirse condicion
(expresin vectorial o matricial).

continue: traslada la ejecucin a la lnea


donde est el final del bucle mas interno
Ejemplos:

while condicin
.......A1; A2;....
end

b) Estructura for-next: el bucle se


repite mientras una variable no supere
determinado valor final.
for variable=ValorInicial:Incremento:ValorFinal
.......A1; A2;....
end

Asociadas con for y while, se utilizan las


sentencias break y continue:

break: traslada la ejecucin a la lnea


siguiente a donde est el final del bucle
mas interno.

% Ingresar 5 valores, de a uno, y visualizar la


suma % de los mismos
clear
clc
suma=0;
for i=1:1:5
valor=input('Ingrese un numero:');
suma=[suma+valor];
end
fprintf('La suma es: %g\',suma)
% Impresion 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

Archivos de Comandos (scripts) y Funciones. Archivos .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 (toolkits), 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 % para que no sean ejecutables, se puede
ubicar el texto que automticamente se visualiza con help xxx (si xxx fuese el nombre de la
funcin).
La primer lnea ejecutable debe estar precedida por la palabra function:
function [valores 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 search path. Y ya est
disponible:
Se puede utilizar desde la ventana de comandos, o desde otro archivo .m.
Ejemplo 1: 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=size(datos,2);
% nmero de columnas de datos
sumador=0;
for i=1:c
sumador=sumador+datos(1,i);
end
f=sumador/c;

Desde la ventana de comandos, o desde una lnea de comandos de otro archivo.m, se


puede usar esta funcin:
a)
>> a=[1,3,2,5,7,4,6,9]
a=
1

>> promedio(a)
promedio =

b)
>> c=promedio([7,11,2,3,8,6,5,9])
4

promedio =
6.3750

4.6250

c)
>> help promedio
Funcion Promedio:
---------------Calcula el promedio de datos
ubicados en un vector fila
Datos=datos()

Ejemplo 2: funcin que permite obtener las races de de una ecuacin de 2 grado, dados los
coeficientes. Se guarda con el nombre raicesgrado2.m (en una carpeta ubicada en el camino de
bsqueda establecido en File/Set Path):
% 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
>> [a,b]=raicesgrado2(2,10,5)
%
Datos de salida: races r1 y r2
function [r1,r2]=raicesgrado2(a,b,c)
a=
r1=(-b+(b^2-4*a*c)^0.5)/(2*a);
-0.5635
r2=(-b-(b^2-4*a*c)^0.5)/(2*a);
b=
-4.4365

Ejemplos de operaciones matemticas bsicas:


Eugenio Kolb

31

Programacin

Ejemplo de asignacin de datos: dadas las


matrices A y B:
A
1
3

B
2
4

5
7

6
8

Establecer una secuencia que permita ubicar los


datos en las variables matriciales, y a
continuacin, realizar las operaciones bsicas:

7 10
15 22
h-3) B.^A: 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) B^A: operacin matricial (A o B debe ser
escalar):

clc
% Borra la ventana de comandos
clear
% Borra variables
A=[1 2 ;3 4]
%Asigna valores a A
B=[5 6;7 8]
% Asigna valores a B

h-3-1: 2.^A:
2 4
8 16

Casos de Expresiones Matriciales:

a) A+B: se suma elemento a elemento

b)

6
8
10 12
A-B: se resta elemento a elemento

c)

-4 -4
-4 -4
A.*B: se multiplica elemento a elemento

h-3-2: 2^A:
10.4827 14.1519
21.2278 31.7106
Otras operaciones:

1) Transpuesta de A: A

2)

5 12
21 32
d) A*B: 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):

e)

f)

g)

h)

19 22
43 50
A./B: se divide elemento a elemento (A/B)
0.2000 0.3333
0.4286 0.5000
A.\B: se divide elemento a elemento (B/A)
(equivale a B./A).
5.0000 3.0000
2.3333 2.0000
A/B: se realiza la divisin matricial (A/B)

1
2
Inversa de A: inv(A)

3
4

-2.0000 1.0000
1.5000 -0.5000
A*inv(A):
1.0000
0
0.0000 1.0000

Ejemplos con automatizaciones: 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=

3.0000 -2.0000
2.0000 -1.0000
Exponenciacin

2 10
3 2
3 1
15 12

h-1) A.^2: elemento a elemento


1 4
9 16
h-2) A^2: operacin matricial (equivale a A*A.
Eugenio Kolb

12
17
1
1

5
8
5
9

>> M1=M>5
M1 =
32

Programacin
0
0
0
1

1
0
0
1

1
1
0
0

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)

0
1
0
1

>> M2=M(M1)
M2 =
15
10
12
12
17
8
9

Resultado (al ejecutarse el programa):


Valores de M
1 -1
2 5
Valores de N
14
0

>> S=sum(M2)
S=

Valores de x
10.0000
-4.0000

83
>>M3=M1.*M
M3 =
0 10
0 0
0 0
15 12

12
17
0
0

0
8
0
9

Ejercicio: dado el sistema de ecuaciones


a b = 14
2a+5b=0
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
1
2

-1
5

N
14
0

Programa:
% Resolucin de un sistema de 2
ecuaciones
%
a - b = 14
%
2a+5b=0
clc
clear
Eugenio Kolb

33

Edited by Foxit Reader


Copyright(C) by Foxit Software Company,2005-2008
34
For Evaluation Only.

ProgramacinFinal2006D.doc

Comandos y funciones bsicas


Funciones y comandos generales
help: proporciona informacin en lnea sobre
todos los directorios de MATLAB.
help comando: porporciona informacin sobre el
comando nombrado
casesen: sensibilidad maysculas/minsculas.
what: lista ficheros .m y .mat del directorio de
trabajo.
size matriz: dimensiones de una matriz
length vector: longitud de un vector
quit: sale de sesin.
exit: sale de sesin.
str2num: convierte cadenas (strings) de
caracteres numricos en los nmeros
correspondientes.
str2double: lo mismo, pero el nmero es de
doble precisin.
num2str: convierte un nmero en string.
int2str: convierte un entero en string.
char: devuelve el caracter Ascii a partir de un
valor decimal

Funciones matemticas y trigonomtrica


sin = seno
cos = coseno
tan = tangente
asin = arco seno
acos = arco coseno
atan = arco tangente
atan2 = arco tangente del cuarto cuadrante
sinh = seno hiperblico
cosh = coseno hiperblico
tanh = tangente hiperblica
asinh = arco seno hiperblico
acosh = arco coseno hiperblico
atanh = arco tangente hiperblica
abs = valor absoluto o mdulo de un complejo
sqrt = raz cuadrada
real = parte real
imag = parte imaginaria
conj = complejo conjugado
round = redondea al entero mas prximo
fix = 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
exp = exponencial de base e.
log = logaritmo neperiano
log10 = logaritmo decimal

Funciones matriciales elementales


expm = matriz exponencial
logm = matriz logartmica
Eugenio Kolb

sqrtm = matriz raz cuadrada


funm = matriz de funciones arbitrarias
poly = polinomio caracterstico
det = determinante
trace = traza
kron = producto tensorial

Matrices especiales
diag = matriz diagonal
eye = matriz unidad
ones = matriz constante (de 1's)
zeros = 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.
meshgrid = usada con funciones de 2 variables
magic = matriz cuadrada mgica.
hilb = matriz de Hilbert
invhilb = 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

Funciones de anlisis de datos


max = 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
hist = histograma
corrcoef = coeficientes de correlacin.
cov = matriz de covarianza

Optimizacin
Fmin= calcula el mnimo de una funcin de una
variable
fmins=calcula el mnimo de una funcin de
varias variables
fzero= calcula los ceros de una funcin de una
variable
34

PROGRAMACIN

V) Grficos
1) Grficas X-Y 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) Grficos Lineales y Logartmicos:
plot(x,y)

Escala Lineal para ambos ejes

semilogx(x,y)

Escala Logartmica para x y Lineal para y

semilogy(x,y)

Al revs

loglog(x,y)

Escala Logartmica para ambos ejes

b) Grficos mltiples:
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.

Lneas y marcas:
plot(x,y,indicador,x,y,indicador)

une los puntos con un indicador de lnea y luego los

marca con otro de puntos.

Indicadores:

a)

De Lneas: - (continua), _ (guiones), : (punteadas), -. (guiones y puntos).

b)

De Marcas: . , * , + , x , o , x.

Se pueden usar combinaciones de esos parmetros . P.e.: r*-. O escribir por separado:
plot(x,y,r,x,y,*, .., etc. O establecer color de marca y de lnea por separado.

Color
amarilla

m magenta
c cyan
r roja
g verde
b azul
w blanca
k negra

punto

Marca
-

Lnea
solida

o
x
+
*
s
d
v
^
<
>
p
h

crculo
marca x
marca +
estrella
cuadrado
diamante
tringulo (abajo)
tringulo (arriba)
tringulo (izquierda)
tringulo (derecha)
pentagrama
hexagrama

:
-.
--

punto
raya-punto
raya-raya

PROGRAMACIN

Escalas de Ejes:
Por defecto, la escala es automtica. Con axis(x_min,x_max,y_min,y_max) se puede personalizar
la escala. Con axis solo, se mantiene la escala para las siguientes grficas.
Subventanas:
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.

Ejemplo:
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) Grficas tridimensionales:
mesh(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(x,y,z)
Grfica de cuadrcula sombreada en vez de abierta.

Para evaluar una funcin de una variable 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 funcin de 2 variables f(x,y), 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 meshgrid
para generar las 2 matrices que definen la retcula subyacente para una funcin bidimensional: xgrid e y-grid.
Es decir, se generan 2 matrices de tamao nxm, basadas en los valores de los vectores x e y: x-grid
conteniendo los valores de x repetidos en cada fila, e y-grid conteniendo los valores de y repetidos en cada
columna.

Ejemplo: se desea graficar z= f(x,y) =

1
1 + x2 + y2

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


Programa:
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) Otras funciones:
plot3
Permite graficar lneas y puntos en un espacio tridimensional.. Es la versin 3D de plot.
plot(x,y,z): x, y y z 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): X, Y y Z 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);
Objetos LINE, creados con plot y plot3: el comando plot y plot3, una vez ejecutado,
produce uno o ms objetos LINE (lnea). Se pueden asignar propiedades adicionales a cada
objeto.
Objetos LINE y otros, adicionales (se aplican a plot y a plot3):
a) Creacin de nuevas 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 plot3.
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 plot3.

VI) Matemticas
1) Polinomios:
Dado f(x) = a0xN + a1xN-1 + a2xN-2+ ..........+aN-1x + aN
N=grado del polinomio (valor mas alto usado como exponente).
a0, a1, ....aN, 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.
Ejemplo: si f(x)=x5 - 2x4 - 11x3 + 27x2 +10x - 24:
a) Clculo de f(x) para un dado conjunto de valores de x, conociendo los coeficientes
del mismo.
La funcin polyval(a,x) permite calcular el falor de f(x). En la expresin, a es una matriz
que contiene los coeficientes, y x es el valor o los valores a evaluar. El resultado de polyval es
una matriz del mismo tamao que x.
2) Clculo 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
% Impresin de los resultados

fprintf(Coeficientes del Polinomio: \n)


fprintf(
%g %g %g %g %g
fprintf(\nValores de x: \n)
fprintf(
%g %g %g

%g

%g

%g

%g
%g

%g
%g

%g
%g

%g

%g \n,a)

%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 ejecutar el programa:

Coeficientes del Polinomio:


1 -2 -11 27 10 -24
Valores de x:
-2 0 3
Valores de f(x) determinados:
88 -24 33
Valores de las races:
r=
-3.3107
2.6651 + 0.7299i
2.6651 - 0.7299i
-0.9842
0.9646
Verificacin de los coeficientes a partir de las races
1 -2 -11 27 10 -24

3) Ajuste de datos: regresin polinmica.


Con la funcin polyfit(x,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)

PROGRAMACIN

Valores de x
1 2 3 4 5 6 7 8 9 10
Valores de y
0 2 5 10 19 28 34 31 32 35
Coeficientes para un ajuste con un polinomio de grado 3
-0.138306 1.9866 -2.81449 0.433333
Coeficientes para un ajuste con un polinomio de grado 6
-0.00145833 0.0653045 -1.05345 7.69169 -25.7079
Coeficientes para un ajuste con un polinomio de grado 3
-0.138306 1.9866 -2.81449 0.433333

39.7409

-20.8333

2) Matemtica Simblica:
(Nota: descriciones y demostraciones de las herramientas de este entorno se obtienen con helpwin
toolbox\symbolic, y con symintro, symcalcdemo, simlindemo, symvpademo, symrotdemo, symecndemo).

a) Objetos y variables simblicas


La Caja de Herramientas de Matemtica Simblica (ToolBox Symbolic Math) usa Objetos
Simblicos producidos por la funcin sym.
As , la sentencia x = sym('x'), produce una variable simblica llamada x.
Se puede abreviar a = sym('a'); t = sym('t'); x = sym('x'); y = sym('y'); escribiendo syms a t x 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) Simplificacin
Con la funcion simple se puede simplificar.
f = sym(cos(x)^2 + sin(x)^2)
f=simple(f)
f=sym('4*x^(4/2)/2')

% el valor de f ser cos(x)^2 + sin(x)^2


% el valor de f ser 1

PROGRAMACIN

f=simple(f)

% resultado es 2*x^2

c) Derivadas e Integrales
Es interesante la posibilidad de calcular la integral o la derivada en forma directa:
As, si nos interesa la expresin x3:
f=sym('x^3')
diff(f)
int(f)

% calcula la derivada 3*x^2 (se podra haber hecho directamente diff(x^3))


% 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 x o la ms cercana alfabticamente a este nombre, salvo que se especifique la
variable. As, int('x^a') retorna x^(a+1)/(a+1), pero int('x^a','a') retorna 1/log(x)*x^a.
d) Constantes simblicas
Tambin se crean con la funcin sym. Por ejemplo: pi=sym(pi), usando una constante ya
existente. O: delta=sym(1/10)
e) Resolucin de Ecuaciones
Las funciones solve y dsolve se usan para resolver ecuaciones escritas de manera
simblica.
Ejemplo: resolver ax2+bx+c
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')
Cualquiera de las 3 formas lleva 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:
z=solve('x^2+x*y+y=3','x^2-4*x+3=0') crea una Estructura de Datos z, con 2 componentes: x e
y. Los valores calculados debern ser solicitados de manera explcita:
z.x:

[ 1]
[ 3]

z.y :

[ 1]
[ -3/2]

Ahora, si se hubiese escrito [x,y]= solve('x^2+x*y+y=3','x^2-4*x+3=0'), esos mismos


resultados se cargaran en los vectores x 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 x, y luego
para aquellas cuyos nombres estn ms cerca alfabticamente a x, dejando las otras como
variables.

PROGRAMACIN

As, w=solve('2*x-3*y+4*z=11','-x+14*y-4*z=11') 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) 'f' (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) 'r' (por defecto, estable siempre que sea posible la forma racional), c) 'e' (error,
muestra el error entre la expresin racional y el real valor de punto flotante , y d) 'd' (forma
decimal, donde el nmero de dgitos es tomado del seteo actual (funcin digits(n)).

Ejemplos de utilizacin de Matemtica Simblica


1) Dado un polinomio: f(x)=x^5-10*x^4+5*x^3-10*x^2-18*x+100
a) Con sym2poly, se obriene un Vector 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]

Nota: si se quisiera ingresar por teclado en tiempo de ejecucin la funcin, debe hacerse como
string y luego cinvertirla en objeto simblico:
fstring=input('Ingrese funcion : ','s');
f=sym(fstring)
c=sym2poly(f)
Muchas veces se desea realizar el proceso inverso: convertir un objeto simblico f en una
string, ya que muchas funciones exigen este formato (por ejemplo, la funcin fplot). Para ello, se
usa la funcin char:
fstring=char(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; polyval(c,x): calcula el polinomio f(x) a
partir de los coeficientes (c); polyfit(x,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 Vector de Coeficientes obtener el


objeto simblico, se debe usar la funcin poly2sym:
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 Integral 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 solve con polinomios
En el caso de un polinomio como el anterior, solve 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, Integrales y Grficos de un polinomio


clc
clear
fstring=input('Ingrese funcion : ','s');
f=sym(fstring);
g=diff(f);
gstring=char(g);
h=int(f);
hstring=char(h);
x1=input('Ingrese valor inicial : ');
x2=input('Ingrese 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');

fprintf(Mensaje1)
fprintf(Mensaje2)
fprintf(Mensaje3)
deltax=(x2-x1)/20;
subplot(2,2,1),ezplot(f,[x1,x2])
subplot(2,2,2),ezplot(g,[x1,x2])
subplot(2,2,3),ezplot(h,[x1,x2])

Nota: si se quisiera usar fplot en vez de ezplot,


habra que convertir f, g y h en strings, con la
funcin char.

Ejecucin:
Ingrese funcion : x^4-8*x^3+6*x^2-18*x+100
Ingrese valor inicial : -100
Ingrese 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) Resolucin de Sistemas de Ecuaciones de diversos 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');

Verificacin en la ventana de comandos:


M=[2 -14 -1; 1 1 -12; -1 10 2];
N=[14;-5;-8];
Z= inv(M)* N
Z=
2.8602
-0.6344
0.6022

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 ejecutar:
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: x2-2xy+3y=-11, x+y2=17


clear
clc
[x,y]=solve('x^2-2*x*y+3*y=-11', 'x+y^2=17');
xx=double(x)
yy=double(y)

xx =
3.4374 - 2.5840i
3.4374 + 2.5840i
0.1569
-11.0317
yy =
3.6993 + 0.3493i
3.6993 - 0.3493i
-4.1040
-5.2945

3) Objetos inline, string y simblicos:interconversin y funciones


relacionadas
Objetos 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')
Objetos 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.
Ejemplos:

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
Resumen relacionado con funciones e interconversin 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('Ingrese funcion implicita: ','s')). Se tiene una cadena de caracteres, u objeto
string.

PROGRAMACIN

1) Con f se pueden realizar operaciones directamente: diff, int, fplot, etc.


2) f0= sym(f) convierte la cadena en un objeto simblico
Con f0 se pueden usar todas las funciones relacionadas con lgebra Simblica
3) f1 = vectorize(f) convierte los operadores ^, /, etc.; en .^, ./. Se aplica si f es string o
una funcin inline.
4) f4=inline(f1) convierte la cadena en un objeto funcin
Se pueden usar, con f4: quad (evaluacin numrica de una integral simple (Simpson)),
quadl (evaluacin numrica de una integral simple (Lobatto), dblquad (evaluacin numrica de
una integral doble), triplequad (evaluacin numrica de una integral triple), etc.
Ejemplo 1
f='2*x^2-20*x+600'
f1=sym(f)
solve(f1)
double(solve(f1))

objeto String
objeto Simblico
Resolucin planteada
Resolucin completa

Ejemplo 2
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))
Ejercicio:
clc;clear;
f=input('Ingrese 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(Integral: %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('Ingrese 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 Grficas 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 helpwin symbolic 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: ezcontour, ezcontourf, ezmesh, ezmeshc, ezplot, ezplot3, ezpolar,
ezsurf, ezsurfc, etc.
Ejemplo:
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])

VII) Interfaces Grficas con MatLab


La Interface Grfica de Usuario (GUI) permite, entre otras cosas:
a) Utilizar VentanasPersonalizadas, con botones de comandos, elementos de men,
cuadros de edicin de datos, elementos grficos, globos de ayuda, etc. Tal como cualquier
aplicacin Windows.
b) Programar Eventos. Por ejemplo, un Evento puede ser un click sobre un botn, ... y
puede existir un conjunto de sentencias que se ejecutarn cada vez que se haga click en ese
botn.
c) Utilizar un Asistente que gua al Usuario en la creacin de la Ventana o Formulario.
Este Asistente permite personalizar fcilmente la ventana grfica, y genera una gran parte del
cdigo (creacin de funciones, declaracin de varianles, etc.). El Usuario debe, nicamente,
planificar y ordenar la secuencia de ingreso de datos, ubicar las sentencias de clculo (tal como
hara en la Ventana de Comandos), y dirigir, mostrar y/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 GUI:


1) Con File/New/Gui/Blank, 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 varargout = xxxx(varargin), 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 haber hecho prcticamente nada an), le produce preocupacin, lo
cual es un error: podemos virtualmente ignorar gran parte del mismo y obtener sin embargo
importantes resultados con la GUI.
Nota: si se desea modificar una Figura existente, tambin hay que ingresar con File/New/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 Property Inspector
(o haciendo doble click sobre el Control), podemos, trabajando en Tiempo de Diseo, asignar los
valores iniciales de las Propiedades de cada Objeto: valores, aspecto, color, etc.
Las Propiedades fundamentales de los Objetos, que utilizaremos en esta etapa, son las
siguientes:
- Tag: 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.
- String: texto visible del objeto. Puede ser editable en Tiempo de Ejecucin (en los
controles Edit).
- Visible: con on u off se hace visible o invisible el control.
Los Objetos fundamentales que utilizaremos, en esta etapa, son:
- Pushbutton: en tiempo de ejecucin, al hacer click sobre el mismo, se ejecuta el cdigo
indicado en el texto asociado o String.
- Text: 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 str2num.
- Axes: 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 valor de una propiedad de un


objeto o control para procesar ese dato (asignndolo a variables, etc.).
variable = get(Objeto, Nombre de Propiedad)
significa asignar a la variable el valor actual de la propiedad tal del objeto tal.
Objeto: es el handle o propietario del objeto.
Ejemplos:
a=get(handles.edit3,'String')
asigna el contenido de la propiedad String del control Edit3 a la variable alfanumrica a

a=str2num(get(handles.edit3,'String'))
asigna el contenido de la propiedad String del control Edit3 (que debe contener nmeros), a la variable
numrica a, que ser escalar, vector o matriz, segn cantidad y distribucin de los nmeros

Sentencia set: permite, en Tiempo de Ejecucin, modificar el valor de propiedades de un


objeto o control. En cierta manera, realiza la operacin inversa que get.
set (Objeto, Nombre de Propiedad,Valor de la Propiedad):
significa asignar a la propiedad tal, de tal objeto, tal valor
Ejemplos:
set(handles.text2,'Visible','on')
set(handles.text2,'String','Ingrese los coeficientes del polinomio')
La primera lnea hace Visible el control text2, y la segunda asigna al mismo una cadena de
caracteres.
Ejemplos prcticos
Ejercicio 1: 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.x2+b.x+c.
Pasos:
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 ejecutar 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 Iniciales: con botn derecho/Property Inspector (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 = pushbutton1_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 = pushbutton2_Callback(h, eventdata, handles, varargin)
a=str2num(get(handles.edit3,'String'))
b=str2num(get(handles.edit4,'String'))
Nota: con get se toma, en tiempo de ejecucin el valor
c=str2num(get(handles.edit5,'String'))
de alguna propiedad de algn objetoPara hacer lo
x1=str2num(get(handles.edit6,'String'))
contrario, se usa set. Ejemplo: agregar un nuevo
x2=str2num(get(handles.edit7,'String'))
control Text8 y un botn Pushbutton3, y programar
para que aciendo click en ste, se ubique en aqul un
xx=x1:(x2-x1)/20:x2
mensaje:
yy=a.*xx.^2+b.*xx+c
plot(xx,yy,'Parent',handles.axes2)
set(handles.text8,String, Eso es una prueba)
set(handles.axes2,'XGrid','on','YGrid','on')

PROGRAMACIN

Axesq
Axes2

Text1 a 7

Edit1 a
7
Pushbutton1 y 2

Ejercicio 2: Se desea obtener un formulario a travs del cual , ingresando los


coeficientes de un polinomio, calcular las races y graficar los valores x-y para x entre 0 y
10. 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

PROGRAMACIN

Text1
Pushbutton1
Text2
Edit1
Pushbutton3
Text3
Edit2
Edit3
Edit4
Pushbutton4
Axes1

function pushbutton1_Callback(hObject, eventdata, handles)


set(handles.text2,'Visible','on')
set(handles.edit1,'Visible','on')
set(handles.text2,'String','Ingrese los coeficientes del polinomio')
set(handles.pushbutton3,'Visible','on')
function pushbutton3_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 pushbutton4_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(x,y,'Parent',handles.axes1)

PROGRAMACIN

Ejercicio 3: 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.

Text1
Text2
Text3
Text4
Text5

Edit1
Edit2
Edit3

Pushbutton1

function pushbutton1_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))

PROGRAMACIN

Ejercicio 4: 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

Ejercicio 5: 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
(pushbutton), 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 pushbutton1_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
Anexo 1

Codificacin de Datos
La palabra MISIONES puede ser almacenada y procesada por un ordenador. Tiene 8 letras
o caracteres. As como se observa en este texto, est lista para ser leda y asimilada por el usuario
comn.
Sin embargo, para otros formatos de representacin necesariamente debemos
descomponerla en los caracteres que la componen. Cada carcter, a su vez, puede ser escrito usando
distintos cdigos. Por ejemplo:
ASCII
M
I
S
I
O
N
E
S
Decimal
77
73
83
73
79
78
69
83
Hexadecimal
4D
49
53
49
4F
4E
45
53
Binario
1001101 1001001 1010011 1001001 1001111 1001110 1000101 1010011

Resulta evidente que, si intentamos imaginar mecanismos fsicos para almacenar o


transmitir esa informacin, el cdigo binario es el que mejor se adapta, al estar representado por
dgitos que pueden tomar solo 2 valores (0 o 1). Es lo que se llama Bit. La traduccin directa de esta
forma de representar los datos a fenmenos fsicos resulta evidente: la posicin encendido o
apagado de un interruptor, un punto de un soporte magntico que est imantado o no, un
conductor elctrico que tenga o no corriente, un lugar de una tarjeta de cartn que est perforado o
no, etc.
Usando paquetes de bits ya podemos representar ms datos. Los paquetes de 8 bits,
llamados Bytes, permiten representar todos los caracteres que conocemos.
Si imaginamos, dentro de un ordenador, un lugar de recepcin fsica que detecta a travs de
8 conductores elctricos comunicados con el teclado el pulsado de una tecla, y si sabemos que
aquellos conductores que tienen corriente elctrica se representan con 1, y los que no con 0,
podemos convertir esa informacin a un formato ms amigable. As, si se detecta una pulsacin
de tecla con la secuencia 01000001, es porque se puls la A.
Base de numeracin
Se refiere al nmero de smbolos diferentes usados para representar un valor.

Cdigo Binario (base 2): utiliza 0 y 1.


Cdigo Hexadecimal (base 16): utiliza 0, 1, ...9, y A, B, ... F.
Cdigo Decimal (base 10): utiliza 0, 1, ... 9.

Todo dato tiene su correspondencia con estos sistemas de numeracin.


Sistema Binario
Considerando que utiliza 2 smbolos para representar valores (0 y 1), combinando los
mismos se tienen los siguientes ejemplos:
- Utilizando 1 dgito, se obtienen 2 combinaciones: 0 y 1.

Programacin
- Utilizando 2 dgitos, se obtienen 4 combinaciones: 00, 01, 10, y 11.
- Utilizando 3 dgitos, se obtienen 8 combinaciones: 000, 001, 010, 011, 100, 101, 110, 111.
- Utilizando N dgitos, se obtienen 2 N combinaciones. En los 3 casos anteriores, se tendra: 21,
22, y 23 combinaciones.

Utilizando cada una de esas combinaciones para representar los nmeros enteros, se tiene el
Sistema o Cdigo Decimal: 0, 1, 2, 3, 4, 5, ...etc.
Binario
Decimal

0
0

1
1

10
2

11
3

100
4

101
5

110
6

111
7

1000
8

1001
9

1010
10

1011
11

1100
12

1101
13

1110
14

1111
15

10000
16

Se puede generalizar diciendo que a partir de un valor escrito en Cdigo Binario se obtiene
el correspondiente valor Natural Entero (Sistema Decimal), expresndolo como una sumatoria de
potencias de 2.
As, un nmero escrito en cdigo Binario usando N dgitos: a N - 1 a N - 2 a N - 3 .... a 2 a 1 a 0 , puede
convertirse en el correspondiente valor Decimal con la expresin a 0 2 0 + a 1 2 1 + a 2 2 2 + .....+
aN-12N-1:
011000101100110001 N dgitos binarios

a N - 1 a N - 2 a N - 3 .... a 2 a 1 a 0

N1

a 0 2 + a 1 2 + a 2 2 + .....+ a N - 1 2
0

N-1

i= 0

ai 2

Una forma prctica de convertir valores de un sistema a otro es a travs de la utilizacin de


una sencilla tabla, asociando el nmero decimal correspondiente a cada uno de los dgitos binarios
utilizados, de derecha a izquierda, y sumar los correspondiente a los dgitos activos en la
codificacin binaria (1).
512

256

128

64

32

16

Decimal

16 + 2 = 18

Binario

10010

Otra manera consiste en ir dividiendo el valor decimal por 2. Por ejemplo, si partimos del
decimal 71, obtendremos que le corresponde el valor binario 1000111
71
1

2
35
1

2
17
1

2
8
0

2
4
0

2
2
0

2
1

Tomando desde atrs haca adelante: 1000111

512

256

128

64

32

16

64 + 4 + 2 + 1 = 71

Operaciones con nmeros binaros


Las operaciones con nmeros binarios son sencillas. Se utiliza casi el mismo razonamiento
que al trabajar con valores decimales. As: 1 + 0 = 1, 0 + 0 = 0, 1 x 0 = 0, 1 x 1 = 1. Sin embargo, 1

Programacin
+ 1 = 10 (no 2). Ejemplo: el decimal 10 tiene la siguiente equivalencia binaria: 1010. El decimal 9,
por otra parte, 1001. Con la suma y el producto de ambos valores decimales obtenemos 19 y 90.
Cmo se realizara el clculo trabajando con valores binarios?
Suma
1

Producto
1

0
0
0

1
0

x
1

10

0
0

0
0
1

1
0
0
0

(19)

(90)
Sistema Hexadecimal
Utiliza 16 smbolos para representar valores (los 10 dgitos numricos, 0 a 9, y las 6
primeras letras, A a F. Estos caracteres, en ese orden, se corresponden con los valores 0 a 15
del cdigo decimal.
Lo que se puede representar con 4 dgitos del cdigo binario, se puede representar con un
smbolo del cdigo hexadecimal. Con ese criterio, podemos realizar las conversiones.
Ejemplos:
231(10 =

1110 0111(2
E

E7(16

7
Binario Hexadecimal
11
3
101
5
1101
D
1111
F
1 0000
10
1 0001
11
1 1111
1F
10 0000
20
10 1110
2E
1 1010 1101
1AD

C) Cdigo ASCII

Decimal
3
5
13
15
16
17
31
32
46
429

Programacin
Un ordenador procesa y almacena informacin binaria. Sin embargo, para representar
caracteres, se define el cdigo ASCII (American Standard Code for Information Interchange).
Para ello, se usan octetos de dgitos binarios o Bits (de Binary Digit). Esos paquetes de 8 bits,
denominados Bytes, permiten 28 = 256 combinaciones posibles. Los primeros 128 (decimal 0 a
127) constituyen el conjunto bsico universal, mientras que los siguientes 128 son utilizados de
manera diferente por los diversos fabricantes de equipos y desarrolladores de Software. Adems, los
32 primeros valores estn reservados para control de comunicaciones, de impresoras y otros (el
retorno de carro est representado por el carcter ASCII con valor decimal 13).
El que corresponde a decimal 0 (primer valor de la tabla), indica vaco (una cadena de caracteres
de longitud 0, lo que no debe confundirse con un dato nulo o inexistente). El carcter
correspondiente al decimal 32 (espacio en blanco) inicia el set de caracteres que normalmente
encontramos en cualquier teclado. Es importante tener la tabla de conversin: en cualquier
momento podemos generar el carcter escribiendo en el teclado numrico el nmero
correspondiente en el cdigo decimal, mientras se mantiene pulsada la tecla ALT.
Se debe destacar que caracteres como , , , etc, se encuentran ya en el conjunto extendido de
caracteres (entre decimal 128 y 255).
En los ejemplos anteriores se ha visto que en el sistema Binario se utilizan dgitos (0 o 1)
puestos uno al lado del otro. Cada uno de los dgitos se llama Bit (de Binary Digit).
Un octeto de dgitos binarios resulta suficiente para representar cualquiera de los smbolos
utilizados normalmente en un teclado. De esa manera se define el Byte, y el cdigo donde se
representa cada smbolo (letras, nmeros, smbolos, etc.) se denomina ASCII (Cdigo Estndar
Americano para el Intercambio de Informacin). Un Byte puede tomar 256 combinaciones
posibles: suficientes para que cada una de ellas represente un carcter.
Conjunto Bsico Universal de Caracteres ASCII
Binario
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
10010
10011
10100
10101
10110

Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

Hexadecimal
0

ASCII
(vacio)

Binario
1000001

1000010

1000011

1000100

1000101

1000110

1000111

1001000

1001001

1001010

1001011

1001100

1001101

1001110

1001111

1010000

10

1010001

11

1010010

12

1010011

13

1010100

14

1010101

15

1010110

16

1010111

Decimal
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87

Hexadecimal
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
53
54
55
56
57

ASCII
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W

Programacin
10111
11000
11001
11010
11011
11100
11101
11110
11111
100000
100001
100010
100011
100100
100101
100110
100111
101000
101001
101010
101011
101100
101101
101110
101111
110000
110001
110010
110011
110100
110101
110110
110111
111000
111001
111010
111011
111100
111101
111110
111111
1000000

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

17

1011000

18

1011001

19

1011010

1A

1011011

1B

1011100

1C

1011101

1D

1011110

1E

1011111

1F
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
40

1100000

(espacio)
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@

1100001
1100010
1100011
1100100
1100101
1100110
1100111
1101000
1101001
1101010
1101011
1101100
1101101
1101110
1101111
1110000
1110001
1110010
1110011
1110100
1110101
1110110
1110111
1111000
1111001
1111010
1111011
1111100
1111101
1111110
1111111
10000000

88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

58
59
5A
5B
5C
5D
5E
5F
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
80

X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

Programacin

Bibliografa:
o

Mathews, John H.; Fink, Kurtis D. Mtodos Numricos con Matlab. Prentice Hall Madrid 2000 ISBN:
84-8322-181-0

Garca, Javier; Rodrguez, Jos; Brazales, Alfonso. Introduccin al Matlab. Universitas (Universidad
Cientfica Universitaria) Crdoba, Argentina- 2002 ISBN: 987-9406-06-8

Etter, Delores M. Soluciones de problemas de ingeniera con Matlab - Prentice Hall 1998 ISBN: 98017-0111-9.
Disponible en Internet:

Garca de Jaln, Javier. Aprenda Matlab 6.5 como si estuviera en primero. Escuela Tcnica
Superior de Ingenieros Industriales. Universidad Politcnica de Madrid. Agosto 2004

(http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab65/matlab65pro.pdf)

Aguilera Garca, Jos J. y otros. Fundamentos de Informtica. Coleccin Apuntes, Universidad de


Jan, 1997 (http://wwwdi.ujaen.es/asignaturas/fundTopo/TEMA1.pdf, ...TEMA2.pdf, .....etc.).

Cordn, Jos A. Curso de iniciacin a MATLAB. 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 Informtica. 1999 Editorial Alfaomega. Ra-ma (citado en
http://www.mailxmail.com/curso/informatica/programacionestructurada/capitulo22.htm)

Direcciones varias:

Sobre Visual Basic: http://mundovb.net/mundoc/

Sobre Programacin en distintos lenguajes: http://lawebdelprogramador.com/cursos/

Sobre Integracin Numrica: http://usuarios.lycos.es/calculoint21/id39.htm

Sobre utilizacin de Matlab: http://internet-solutions.com.co/deacosta/matlab/Curmat1.html

Potrebbero piacerti anche