You are on page 1of 17

Control de entrada/salida

6
6

MDULO SOBRE PROGRAMACIN MATLAB


CONTROL DE ENTRADA / SALIDA

OBJETIVOS
Al terminar este mdulo el estudiante estar en condiciones de: Planear y controlar en forma exacta cmo y donde visualizar los resultados ya sea en la pantalla o en el papel de la impresora. Utilizar los descriptores de edicin d, e, i, f, g, s para visualizar resultados. Utilizar las funciones input, fprintf, sprintf y disp para introducir datos desde el teclado y visualizar los resultados. Distinguir las partes que conforman los descriptores de edicin: Conversin de caracteres, nmero de cifras decimales, precisin y ancho de campo. Utilizar la funcin format para controlar el formato de salida de los valores numricos en la linea de comando de Matlab.

INTRODUCCIN
En el mdulo 5 se estudia la interfaz grafica de usuario de Matlab, donde se programa con objetos y la diferencia radica en que los programas se realizan con ayuda de unos subprogramas que tiene incorporado Matlab. Este mdulo ensea a utilizar las funciones ms importantes para introducir y visualizar datos. Las instrucciones de entrada/salida que se analizan en el mdulo 1 son las proposiciones input / disp con lista dirigida. Estas brindan un procedimiento rpido y sencillo para la entrada y salida de datos numricos, pero tienen desventajas. La proposicin input con lista dirigida suministra un medio conveniente para la entrada de datos numricos desde el teclado; sin embargo, puede necesitarse un modo de entrada ms estructurado cuando se lee de un archivo de datos. La proposicin disp no le permite al programador escoger el formato de salida. El uso de la proposicin disp para escribir encabezados a resultados numricos es poco elegante e ineficiente. Gracias a las proposiciones fprintf y sprintf son posibles una variedad de arreglos de datos y el programador puede planear y controlar en forma exacta cmo y dnde visualizar los resultados ya sea en la pantalla o en el papel de la impresora. En este mdulo, a estas proposiciones se les llama: proposiciones input / fprintf con formato dirigido.

Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

PROPOSICIN input CON FORMATO DIRIGIDO La proposicin ejecutable input, se utiliza con una proposicin fprintf y su frmula general es: Nombre = input ( Entrada = ) Donde: Nombre representa el nombre de la variable. input representa el nombre de la proposicin. Entrada = representa el nombre de la variable (o variables) a la cual se asigna el valor leido Un ejemplo de la proposicin input con formato dirigido es: EJEMPLO 6.1 USO DE LA PROPOSICIN input CON FORMATO DIRIGIDO Este programa calcula el volumen de la esfera y el valor del radio se suministra desde el teclado.
% ************* Programa 6.1 *************** clear all,clc % Introduzca el valor del radio de la esfera Radio= input( Introduzca el radio de la esfera = ) ; % Escriba la frmula del volumen de la rsfera Vol = (3/4)*pi*Radio.^3; % Salida del resultado fprintf( \ n Radio = %2i Volumen = %3.3f \n ,Radio,Vol)

La salida del programa es:


Introduzca el radio de la esfera = 5 Radio = 5 Volumen = 523.599

Esto significa que se suministra desde el teclado un valor real y se asigna al nombre de la variable real Radio. El programador debe arreglar los datos segn el descriptor de edicin %2i de la proposicin asociada fprintf. El valor que se asigna a Radio debe introducirse desde el teclado en forma entera real sin cifras decimales de precisin justificada a la derecha en la columna de un campo de dos, i indica un nmero entero. El descriptor de edicin %3.3f para la salida del valor del volumen de la esfera,tiene un ancho de campo de 3 con tres cifras decimales despes de la coma y f indica un nmero real,de forma decimal (sin exponente). La forma general de la proposicin fprintf es: Apstrofos

fprintf( \n % wi % w.bf % w.bg % w.be \n ,N, ,N,M,T )


Funcin Salida de Descriptores de edicin resultados saltando una lnea Salida de Variables de resultado salida,separadas en una misma por comas lnea.

Donde:

w establece el ancho del campo. b especifica el nnero de dgitos despus del punto decimal. i indica un nmero entero real. 2

Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

f g e .

indica un nmero entero real de forma decimal ( sin exponente). indica las dos formas e y f. indica una forma exponencial. indica el punto decimal.

DESCRIPTOR DE EDICION i El descriptor de edicin i se utiliza para especificar una constante entera que se proporciona de un archivo de datos o desde el teclado y la asigna al nombre de la variable entera de la proposicin input asociada. La forma general del descriptor de edicin i es:

% wi
establece el ancho del campo(el nmero de columnas de las cuales se lee el valor). i indica una forma de tipo entero. Un ejemplo del uso del descriptor de edicin i es:
>> A=23; >> fprintf(A=%2i \n,A)

Donde:

La salida es:
A= 23

Un espacio en blanco delante del descriptor de edicin se interpreta como una columna vaca a la salida de los resultados. Por ejemplo, si escribe ahora : >> fprintf( A=%2i \n ,A) La salida es: A=23, observe el espacio en blanco al lado izquierdo de A. Por tanto es importante que las constantes enteras en un registro se justifiquen a la derecha dentro de sus campos. Por ejemplo,si el valor entero 23, se estableci para leerlo con un descriptor de edicin %5i, se coloca en la cuarta columna del campo de cinco columnas, anteponiendose tres columnas vacias, el valor que se asigna al nombre de la variable es 23. >> fprintf(A=%5i \n,A) La salida es: A= 23, observe el espacio en blanco despus del signo igual. El signo menos hace parte del valor del dato. El signo algebraico ocupa una columna que est implcito en el ancho del campo. Por ejemplo, si escribe ahora : >> B=-23; >> fprintf(B=%2i\n,B) La salida es: B=-23, observe que reserva una columna para el signo.

DESCRIPTOR DE EDICION f El descriptor de edicin f se utiliza para especificar un nmero entero real de forma decimal(sin exponente) que se proporciona de un archivo de datos o desde el teclado y la asigna al nombre de la variable entera de la proposicin input asociada. Universidad del Atlntico-Facultad de Ingeniera 3

Control de entrada/salida

La forma general del descriptor de edicin f es:

% w.bf
Donde: w establece el ancho del campo. b especifica el nmero de dgitos que siguen al punto decimal(cifras decimales). f indica un nmero de tipo real de forma decimal(sin exponente). . indica el punto decimal.

Ejemplos del uso del descriptor de edicin f es: Escriba desde la lnea de comando de Matlab:
>> B= 7.5; >> fprintf(B=%2.1f \n ,B)

La salida es: B=7.5


>>fprintf( B=% 2.1f \n ,B)% observe el espacio despus del caracter %

La salida es: B= 7.5,observe el espacio despus del signo igual. Un descriptor de edicin %2.1f que se emplea con una proposicin fprintf, significa que la constante correspondiente en el registro debe estar en modo decimal real ( sin exponente) y que el nombre de la variable en la lista fprintf debe ser real. El valor se lee de las 2 columnas del registro. El nmero 2 especifica el nmero de columnas (ancho del campo) cubierto por el descriptor. Hay un lugar decimal (.1). El punto decimal No necesita incluirse en el valor que proporciona ya que el descriptor de edicin en la especificacin fprintf (%2.1f) coloca el punto decimal de modo que el ultimo dgito del campo de 2 columnas est a la derecha del punto decimal. Un punto decimal ocupa una columna y debe incluirse en el ancho del campo, reduciendo asi en uno el nmero de dgitos que pueden colocarse en un campo especifico. Los signos algebraicos positivos y negativos estn implcito en el ancho del campo del descriptor de edicin. Es buena prctica especificar para todos los descriptores de edicin un ancho del campo mayor en dos lugares del mnimo requerido, que suministren espacios que separen valores sucesivos. Si el descriptor de edicin f no proporciona los espacios para el nmero de cifras decimales y el nmero de caracteres en el valor ( que incluye el punto decimal y el signo algebraico de una cifra significativa), se presenta un listado de valores que no se distinguen unos de otros. Estos casos se trataran ms adelante. Los siguientes ejemplos ilustran el uso del descriptor de edicin f: Escriba desde la lnea de comando de Matlab: Caso 1 >> fprintf('%7.6f\n',pi) % la salida es: 3.141593 Caso 2 >> fprintf('%6.4f\n',pi) % la salida es: 3.1416
Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

Caso 3 >> fprintf('%10.5f\n',pi) % la salida es: 3.14159 En el primer caso el nmero pi se visualiza ocupando 7 columnas justificadas a la derecha, el punto decimal no entra en el conteo y tiene seis decimales. En el segundo caso el nmero pi se visualiza ocupando cinco columnas justificadas a la derecha y tiene cuatro decimales, redondea la ltima cifra. En el tercer caso el nmero pi se visualiza ocupando 7 columnas justificadas a la derecha, dejando tres columnas vacias antes del nmero y tiene cinco decimales. El siguiente ejemplo utiliza nmeros reales positivos, negativos y exponenciales: Escriba desde la lnea de comando de Matlab:
>> X=1234.567;Y=-0.012345678;Z=0.1234567e-2; >> fprintf(%13.7f %13.7f %13.7f\n,X,Y,Z)

La salida es:
1234.5670000 -0.0123457 0.0012346

EJEMPLO 6.2 ENTRADA DE DATOS DESDE UN VECTOR COLUMNA. Este programa calcula el rea y la longitud de la circunferencia para valores del radio dado en forma de un vector columna. Los valores del radio son 10, 20, 32, 40 y 75
% ************ Programa 6.2************** clear all clc Radio=[10 20 32 40 75]'; for N=1:5 Circun=2*pi*Radio; Area= pi*Radio.^2; fprintf('\n Cuando el radio=%2i la circunfrencia es %7.3f\n',Radio(N),Circun(N)) fprintf(' y el area es %7.3f\n',Area(N)) end

La salida del programa es:


Cuando el radio=10 la circunfrencia es 62.832 y el area es 314.159 Cuando el radio=20 la circunfrencia es 125.664 y el area es 1256.637 Cuando el radio=32 la circunfrencia es 201.062 y el area es 3216.991 Cuando el radio=40 la circunfrencia es 251.327 y el area es 5026.548 Cuando el radio=75 la circunfrencia es 471.239 y el area es 17671.459

Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

EJEMPLO 6.3 EL CARCTER \n ENTRE DESCRIPTORES DE EDICIN Calcula el rea del crculo y los datos aparecen en el siguiente rengln con sus respectivos encabezados.
% ************* Programa 6.3 ******************** clear all,clc Diam=4.0; Area=pi*(Diam/2)^2; fprintf('Dimetro(cm) Area(cm^2) \n %i %10f \n',Diam,Area)

La salida del programa es:


Dimetro(cm) 4 Area(cm^2) 12.5664

EJEMPLO 6.4 INTRODUCCIN DE DATOS DESDE UN VECTOR FILA La frmula para el rea de un tringulo de lados a, b y c es:

Area = S (S a )(S b )(S c ) Donde S = (a + b + c ) / 2 Calcule el rea del tringulo para a=2, b=3 y c =4
Introduzca los valores en forma vectorial: [2,3,4] El siguiente programa realiza los clculos:
% ************* Programa 6.4 ******************** %Este programa calcula el rea de un tringulo de %lados A, B y C clear all clc L=input('Introduzca los lados='); s= (L(1) + L(2) + L(3))/2; Eq=@(s)(s*(s-L(1))*(s-L(2))*(s-L(3)))^(1/2); Argum=(s*(s-L(1))*(s-L(2))*(s-L(3))); if (Argum)<= 0 disp('El triangulo es imposible') else Area=Eq(s); fprintf('El rea es de %6.5f\n',Area) end

La salida del programa es:


Introduzca los lados=[2,3,4] El rea es de 2.9047

Se utiliza la estructura de bloque if else end, de forma tal que cuando se introduzcan algunos valores de los lados que hacen el argumento Argum adquiera un valor negativo o cero, aparece el mensaje El tringulo es imposible. Los valores de los lados se introducen desde el teclado en forma de un vector fila entre corchetes ([2,3,4]), separados por comas o dejando un espacio en blanco entre ellos.

Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

DESCRIPTOR DE EDICION g El descriptor de edicin g se utiliza para especificar un nmero entero real de notacin exponencial y en forma decimal (sin exponente), que se proporciona de un archivo de datos o desde el teclado y la asigna al nombre de la variable entera de la proposicin input asociada. En el formato g, el nmero a la derecha del punto decimal, especifica el nmero total de dgitos que son visualizados. El descriptor de edicin g produce un campo tanto para los descriptores de edicin f o e dependiendo del valor asignado. La forma general del descriptor de edicin g es:

%w.bg
Donde: w establece el ancho del campo. b especifica el nmero total de digtos visualizados. g indica el modo de conversin de caracteres e y f . indica el punto decimal.

Los siguientes ejemplos ilustran el uso del descriptor de edicin g: Escriba desde la lnea de comando de Matlab:
>> X=1234.567;Y=-0.012345678;Z=0.1234567e-2; >> fprintf(%13.7g %13.7g %13.7g\n,X,Y,Z)

La salida es: 1234.567 -0.01234568

0.001234567

La salida con el descriptor de edicin g, presenta los resultados con mayor precisin, que cuando se usa el descriptor de edicin f.
>> fprintf(X=%-13.7g Y=%-13.7g Z=%-13.7g\n,X,Y,Z)

La salida es:
X=1234.567 Y=-0.01234568 Z=0.001234567

En ste ejemplo se coloca el signo (-) en el descriptor de edicin g, para que justifique los valores a la izquierda.

>> fprintf(A=%.7g \n,pi) La salida es: A=3.141593 En ste ejemplo observe que el nmero total de digtos son 7 que corresponde al especificado en el descriptor de edicin g, sin incluir el punto decimal. EJEMPLO 6.5 USO DE input CON LA PROPOSICIN for end Este programa explica detalladamente cada una de la especificaciones ms comunes que se utilizan para la salida de los resultados numricos de precisin sencilla.. El valor asignado para X es 0.1234567.
% ************programa 6.5 **************** clear all,clc input(Introduzca un numero real=); X= input for i=1:4 disp('***************************************************')
Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

fprintf(El valor:%10.7g se imprime como:\n,X) fprintf fprintf(%17.7g cuando la especificacin es %%17.7g\n,X) fprintf fprintf(%17.5g cuando la especificacin es %%17.5g\n,X) fprintf fprintf(%17.3g cuando la especificacin es %%17.3g\n,X) fprintf fprintf(%17.1g cuando la especificacin es %%17.1g\n,X) fprintf X=100*X; end La salida del programa es: Introduzca un numero real=0.1234567 ************************************************** El valor: 0.1234567 se imprime como: 0.1234567 cuando la especificacin es %17.7g 0.12346 cuando la especificacin es %17.5g 0.123 cuando la especificacin es %17.3g

0.1 cuando la especificacin es %17.1g **************************************************


El valor: 12.34567 se imprime como: 12.34567 cuando la especificacin es %17.7g 12.346 cuando la especificacin es %17.5g 12.3 cuando la especificacin es %17.3g 1e+001 cuando la especificacin es %17.1g ************************************************** El valor: 1234.567 se imprime como: 1234.567 cuando la especificacin es %17.7g 1234.6 cuando la especificacin es %17.5g 1.23e+003 cuando la especificacin es %17.3g 1e+003 cuando la especificacin es %17.1g ************************************************** El valor: 123456.7 se imprime como: 123456.7 cuando la especificacin es %17.7g 1.2346e+005 cuando la especificacin es %17.5g 1.23e+005 cuando la especificacin es %17.3g 1e+005 cuando la especificacin es %17.1g

El siguiente programa es para la salida de resultados numricos de doble precisin. El valor asignado para X es 123456789.0
clear all clc X= input input(Introduzca un numero real=); for i=1:4 disp(**************************************************) disp fprintf(El valor:%10.9g se imprime como:\n,X) fprintf fprintf(%20.9g cuando la especificacin es %%20.9g\n,X) fprintf fprintf(%20.7g cuando la especificacin es %%20.7g\n,X) fprintf fprintf(%20.5g cuando la especificacin es %%20.5g\n,X) fprintf fprintf(%20.3g cuando la especificacin es %%20.3g\n,X) fprintf X=100*X; end

Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

La salida del programa es:


Introduzca un numero real=123456789.0 ************************************************** El valor: 123456789 se imprime como: 123456789 cuando la especificacin es %20.9g 1.234568e+008 cuando la especificacin es %20.7g 1.2346e+008 cuando la especificacin es %20.5g 1.23e+008 cuando la especificacin es %20.3g ************************************************** El valor:1.23456789e+010 se imprime como: 1.23456789e+010 cuando la especificacin es %20.9g 1.234568e+010 cuando la especificacin es %20.7g 1.2346e+010 cuando la especificacin es %20.5g 1.23e+010 cuando la especificacin es %20.3g ************************************************** El valor:1.23456789e+012 se imprime como: 1.23456789e+012 cuando la especificacin es %20.9g 1.234568e+012 cuando la especificacin es %20.7g 1.2346e+012 cuando la especificacin es %20.5g 1.23e+012 cuando la especificacin es %20.3g ************************************************** El valor:1.23456789e+014 se imprime como: 1.23456789e+014 cuando la especificacin es %20.9g 1.234568e+014 cuando la especificacin es %20.7g 1.2346e+014 cuando la especificacin es %20.5g 1.23e+014 cuando la especificacin es %20.3g

DESCRIPTOR DE EDICION e El descriptor de edicin e se utiliza para especificar la salida de un nmero entero real de notacin exponencial, que se proporciona de un archivo de datos o desde el teclado y la asigna al nombre de la variable entera de la proposicin input asociada. Cuando se desconoce la magnitud del valor, puede ser ventajoso especificar la salida numrica con un descriptor de edicin e. La forma general del descriptor de edicin e es:

%w.be
Donde: w b e . establece el ancho del campo. especifica el nmero total de digtos despus del punto decimal. indica el modo exponencial real. indica el punto decimal.

Los siguientes ejemplos ilustran el uso del descriptor de edicin e: Escriba desde la lnea de comando de Matlab: >> fprintf(%.e\n,pi) La salida es: 3e+000,observe que la salida registra un solo digito.
Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

>> B=-0.0045678; >> fprintf('A=%-0.5e \n',B) La salida es: A=-4.56780e-003,convierte el numero en forma exponencial.
La siguiente tabla muestra cmo pi se visualiza bajo una variedad de especificaciones de descriptores de edicin utilizando sprintf: Especificacin de edicin sprintf(%.0e,pi) sprintf(%.1e,pi) sprintf(%.5e,pi) sprintf(%.10e,pi) sprintf(%.0f,pi) sprintf(%.5f,pi) sprintf(%.10f,pi) sprintf(%8.5g,pi) sprintf(%8.10g,pi) La salida es: 3e+00 3.1e+00 3.14159e+000 3.1415926536e+000 3 3.14159 3.1415926536 3.1416 3.141592654

La forma general de la proposicin sprintf es: Apstrofos

sprintf( \n % s % d % w.bg % w.bf %w.be \n , N,M,T ) ,N ,


Funcin Salida de Descriptores de edicin resultados saltando una lnea Salida de Variables de resultado salida,separadas en una misma por comas lnea.

Donde:

w b s d f g e N .

establece el ancho del campo. especifica el nnero de dgitos despus del punto decimal. indica una cadena de caracteres. indica cualquier nmero dgito. indica un nmero entero real de forma decimal ( sin exponente). indica las dos formas e y f. indica una forma exponencial. indica la cadena de caracteres. indica el punto decimal.

DESCRIPTOR DE EDICION s El descriptor de edicin s se utiliza para anotar resultados numricos a la salida con informacin de carcter alfanumricos u otros de caracteres constantes, que se proporciona de un archivo de datos o desde el teclado y la asigna al nombre de la variable entera de la proposicin input asociada. La edicin s de cadenas de caracteres consiste en encerrar la lista de caracteres entre dos apstrofos ( ).
Universidad del Atlntico-Facultad de Ingeniera

10

Control de entrada/salida

La forma general del descriptor de edicin s es:

%s
Donde: s especifica la cadena de caracteres alfanumricos.

Los siguientes ejemplos ilustran el uso del descriptor de edicin s: Escriba en la lnea de comando de Matlab:
>> sprintf('El precio de la %s en %d/%d/%d fue $%.2f','brea',7,1,2010,3.39)

La salida es: ans = El precio de la brea en 7/1/2010 fue $3.39 Los valores a la salida deben colocarse en el mismo orden secuencial de los descriptores de edicin en la cadena de caracteres. Cada valor a la salida corresponde a un descriptor de edicin en la cadena de funcin sprintf. EJEMPLO 6.6 USO DE inputname CON LAS PROPOSICIONES disp y sprintf Sea la funcin myfun con argumentos a y b. Se requiere que las proposiciones disp y sprintf visualicen las dos cadenas de caracteres en pantalla a la salida. Se sumistran los valores de a=10 y b=5 y el valor de y es calculado por el programa. El siguiente programa ilustra el uso de la proposicin inputname:
% ************ programa 6.6 *************** function y = myfun(a,b) disp(sprintf('Mi primera entrada es "%s".' ,inputname(1))) disp(sprintf('Mi segunda entrada es "%s".',inputname(2))) y = a+b;

Escriba en la linea de comando de MATLAB


>> a=10;b=5; >> myfun(a,b)

La salida es:
Mi primera entrada es "a". Mi segunda entrada es "b". ans = 15

CARACTERES DE CONTROLES ESPECIALES Es una parte del texto de la cadena de caracteres, pero debido a que no pueden introducirse como texto ordinario, requieren una secuencia de cadena de caracteres nicos para representarlos. Use algunas de las siguientes secuencias de cadenas de caracteres para insertar caracteres especiales a la salida : Para insertar Use Retroceso \b Forma alimento \f Nueva lnea o en la misma lnea \n Retrono del carro \r Desplazamiento horizontal \t Barra inversa \ \\ El carcter % %% Cualquier digto numrico \d El tabulador vertical \v
Universidad del Atlntico-Facultad de Ingeniera

11

Control de entrada/salida

La alarma o carcter beep El carcter escape Cualquier carcter espacio en blanco, equivalente al conjunto [\t\f\n\r] El carcter con valor hexadecimal N Cualquier carcter simple ( incluyendo el espacio en blanco)

\a \e \s \xN o \x{N}

El siguiente ejemplo ilustra el descriptor de edicin \s de cadena de caracteres y el descriptor de edicin de cualquier nmero digto \d y seis valores para intercambiarlos secuencialmente en la cadena de caracteres:
>> S=sprintf(' %s =%d \n','A',479,'B',352,'C',650)

La salida es:
S = A =479 B =352 C =650

Puede colocar valores de argumentos en la lista secuencial de argumentos( en el mismo orden en que los descriptores de edicin aparecen en la cadena) o por identificador (agregando un nmero a cada uno de los descriptores de edicin que identifique el valor del argumento que reemplaza). Por defecto,MATLAB utiliza el orden secuencial. Para especificar argumentos con identificador numrico, se agrega un entero positivo seguido por un signo $ inmediatamente despus del carcter % en el descriptor. Los siguientes ejemplos ilustran su uso: Ordenado secuencialmente:
>> s=sprintf('%s %s %s','Primero','Segundo','tercero')

La salida es:
s = Primero Segundo tercero

Ordenado por identificador:


>> s=sprintf('%3$s %2$s %1$s','Primero','Segundo','tercero')

La salida es:
s = tercero Segundo Primero

EJEMPLO 6.7 USO DE LAS ESTRUCTURAS if end / for end y sprintf. El siguiente programa imprime todos los tres dgitos que es igual a la suma de los cubos de sus dgitos:
% ************* programa 6.7 ****************** clear all clc for H=1:9 for T=0:9 for U=0:9 if (100*H+10*T+U == H^3+T^3+U^3) N=sprintf('%s=%d \n','H',H,'T',T,'U',U); N end end end end
Universidad del Atlntico-Facultad de Ingeniera

12

Control de entrada/salida

La salida del programa es:


N = H=1 T=5 U=3 N = H=3 T=7 U=0 N = H=3 T=7 U=1 N = H=4 T=0 U=7

LA PROPOSICIN format. Use la proposicin format para controlar el formato de salida de los valores numricos visualizados en la lnea de comando de MATLAB. Para escoger el formato de su preferencia, del men file seleccione Preferences luego Command window y escoga Numeric format. Alternativamente puede escribir el formato numrico de su preferencia en la lnea de comando de MATLAB. Use algunos de los siguientes formatos numricos para visualizar valores numricos a la salida : Formato numrico format short format long format short e format long e format short g format long g format hex format bank format rat pi 3.1416 3.14159265358979 3.1416e+000 3.14159265358979e+000 3.1416 3.14159265358979 400921fb54442d18 3.14 355/113 Descripcin 5 dgitos 16 dgitos 5 dgitos ms exponente. 16 dgitos ms exponente. El mejor de los formatos short. El mejor de los formatos long. Punto flotante, hexadecimal. 2 dgitos decimales. Nmero fraccionario.

ESPECIFICANDO EL ANCHO DEL CAMPO Y LA PRECISIN A LA SALIDA. Para especificar el ancho del campo o la precisin usando valores de una lista secuencial del argumento, utilice un astrisco (*) en lugar del ancho del campo o precisin en el operador de formato. El siguiente ejemplo ilustra su uso:
>>s=sprintf('%*f %.*f %*.*f',15,123.45678,3,16.42837,6,4,pi) La salida es:
s = 123.456780 16.428 3.1416

El ejemplo formatea y visualiza tres nmeros. El primer formato %*f, tiene un astrisco en la localizacin del ancho del campo,especificando simplemente el ancho del campo de 15 y
Universidad del Atlntico-Facultad de Ingeniera

13

Control de entrada/salida

se toma de la lista del argumento. El segundo formato, %.*f, se coloca un astrisco despus del punto decimal, esto significa la precisin 3 y toma su valor de la lista del argumento. El tercer formato %*.*f, especifica tanto el ancho del campo cmo la precisin (6 y 4) en la lista del argumento. Se pueden mezclar dos estilos. Por jemplo, sta funcin obtiene el ancho del campo (5) de la lista del argumento y la precisin (2) de la cadena de caracteres:
>> S=sprintf('%*.2f',5,123.45678)

La salida es:
S = 123.46

USANDO IDENTIFICADORES EN EL ANCHO DEL CAMPO Y PRECISIN. Se pueden derivar valores del ancho del campo y precisin de una lista de argumentos no secuenciales. En el interior del formato especifique el ancho del campo y/o la precisin con un astrisco seguido por un nmero identificador, seguido por un signo $. El siguiente ejemplo ilustra su uso:
>>S=sprintf sprintf('%1$*4$f %2$.*5$f %3$*6$.*7$f', 123.45678, 16.42837, pi, 15, 3, 6, 4) sprintf

La salida es:
S = 123.456780 16.428 3.1416

RESTRICCIONES PARA USAR IDENTIFICADORES. Si cualquiera de los formatos en una cadena incluye un identificador de campo, por consiguiente, todos los formatos en esa cadena deben ser del mismo tipo. No puede usar identificadores secuenciales y no secuenciales al mismo tiempo en la misma funcin: Sintxis vlida:
>> sprintf(%d %d %d, 1,2,3) %d, 1,2,3)

Sintxis invlida:
>> sprintf(%d %3$d

Si se suministra ms valores en el argumento que los que estn en los formatos de cadenas, reusa de los formatos, pero MATLAB permite esto solamente para comandos que se usan en orden secuencial.No puede reusar de formatos cuando llama una funcin con clasificacin numerada en los valores del argumento: Sintxis vlida:
>>sprintf(%d,1,2,3,4)

Sintxis invlida:
>>sprintf(%1$d,1,2,3,4)

No utilice identificadores cuando el valor del argumento est en forma de vector o arreglo: Por ejemplo si V=[1.4 2.7 3.1] Sintaxis vlida:
>> S=sprintf('%.4f %.4f %.4f',V)

Sintaxis invlida:
>> S=sprintf('%3$.4f %1$.4f %2$.4f',V)

Recomendaciones para escribir comentarios extensos en los programas: Si el comentario se necesita que se visualice al ejecutar el programa, use la siguiente forma genrica: Comentario = { Escriba aqu el texto } Universidad del Atlntico-Facultad de Ingeniera 14

Control de entrada/salida

Si el comentario no se necesita que se visualice despus de ejecutar el programa, use la siguiente forma genrica:

%{ Escriba aqu el texto %} CREACIN DE ESTRUCTURAS. Las estructuras son semejantes a los arreglos de celdas, porque ellas permiten agrupar colecciones de datos diferentes en una simple variable. Sin embargo, en vez de direccionar los elementos por nmeros, los elementos de la estructura son direccionados por nombres denominados campos. Igual que los arreglos de celdas, las estructuras pueden tener ualquier nmeros de dimensiones, pero un simple escalar o arreglo vectorial es el tipo ms comn. Los arreglos de celdas usa llaves {} para acceder a los datos, las estructuras usan una notacin punto(.) para acceder a los datos en el campo. Los siguientes ejemplos ilustran su uso. Escriba en la lnea de comando de MATLAB.
>> >> >> >> >> circulo.radio=3.5; circulo.centro=[0 1]; circulo.estilo_linea='--'; circulo.color='rojo'; circulo

Salida de la estructura:
circulo = radio: centro: estilo_linea: color: 3.5000 [0 1] '--' 'rojo'

Los datos son almacenados en una estructura variable llamada circulo. Los campos de caso sensitivo son denominados radio, centro, estilo_linea y color. Los nombres de campos de estructuras tienen las mismas restricciones cmo los nombres de variables: Pueden contener hasta 63 caracteres y pueden comenzar con una letra. Si hay ms de un circulo, puede almacenarse un segundo elemento en la variable circulo. Por ejemplo, en la siguiente sentencia:
>> circulo(2).radio=4.5; >> circulo(2).color=green; >> circulo(2).estilo_linea=:; >> circulo(2).centro=[2.5 -1.5]; >> circulo circulo = 1x2 struct array with fields: radio centro estilo_linea color

circulo es una arreglo de estructura que tiene dos elementos. El (2) aparece inmediatamente despus del nombre de la variable, porque es la variable que tiene un elemento agregado a l. El sufijo .nombre_campo identifica el campo donde los datos deben ser colocados. Observe que los campos de la estructura son llenados esta vez en orden diferente y el tamao de los datos difiere entre los dos elementos. Esto es, los campos de color son rojo y green.
15

Universidad del Atlntico-Facultad de Ingeniera

Control de entrada/salida

RECUPERANDO EL CONTENIDO DE LA ESTRUCTURA. Cuando se conoce los nombres de los campos asociados con un arreglo de estructura, para recuperar el dato de un elemento del campo de una estructura particular, simplemente se requiere identificarlos. Por ejemplo, en la siguiente sentencia:
>> circulo(1).radio=3.5; >> Radio=circulo(1).radio Radio = 3.5000 >> Area=pi*Radio^2 Area = 38.4845

circulo(1).radio identifica el valor 3.5, que se usa para calcular el rea del primer circulo.
>> circulo.radio=[2:0.5:5] circulo = radio: [2 2.5000 3 3.5000 4 4.5000 5] >> Radio=circulo.radio(1) Radio = 2

circulo.radio identifica siete valores del radio del circulo y circulo.radio(1) identifica el primer valor (2) del vector fila. El siguiente ejemplo 6.8 ilustra su uso.

EJEMPLO 6.8 USO DE DATOS DE ESTRUCTURAS La frmula para el rea de un tringulo de lados a, b y c es:

Area = S (S a )(S b )(S c ) Donde S = (a + b + c ) / 2 Calcule el rea del tringulo para a=2, b=3 y c =4
El siguiente programa realiza los clculos:
% ************* Programa 6.8 ******************** %Este programa calcula el rea de un tringulo de %lados A, B y C %Este programa calcula el rea de un tringulo de %lados A, B y C clear all clc triangulo.lado=[2 3 4]; L1=triangulo.lado(1);L2=triangulo.lado(2);L3=triangulo.lado(3); s=(L1+L2+L3)/2; Eq=@(s)(s*(s-L1)*(s-L2)*(s-L3))^(1/2); Argum=(s*(s-L1)*(s-L2)*(s-L3)); if (Argum)<= 0 disp('El triangulo es imposible')
Universidad del Atlntico-Facultad de Ingeniera

16

Control de entrada/salida

else Area=Eq(s); fprintf('El rea es de %6.5f\n',Area) end

La salida del programa es:


El rea es de 2.90474

Universidad del Atlntico-Facultad de Ingeniera

17

You might also like