Descripción de la Representación de Valores
Todo lenguaje de programación de alto nivel provee algún mecanismo para describir la representación de los valores en el mundo exterior. En la operación de salida se describe como nos interesa que aparezcan escritos los valores seleccionados. En el caso de la entrada se nos dice como fue preparado el archivo que contiene los valores que utiliza nuestro programa.
En términos generales esta descripción es lograda describiendo individualmente cada uno de los campos que componen el registro de entrada ó de salida. La descripción de cada campo depende a su vez del tipo ó clase de valor que representa: punto fijo, punto flotante, no numérico y otros. En la descripción del registro tenemos la flexibilidad de hacerlo del tamaño que queramos, pero debemos tomar en consideración las limitaciones físicas impuestas por cada unidad.
Cada campo es descrito mediante una especificación de campo, de izquierda a derecha. La codificación de cada especificación varía de un lenguaje de programación de alto nivel a otro. La interpretación por la computadora de cada especificación depende de la actividad con la cual está relacionada; si es de entrada o de salida.
yprintf( a, lista de expresiones );
donde: a => constante o variable de caracteres conteniendo el formatoscanf( a, lista de variables precedidas del signo& );
Debe existir correspondencia tanto en cantidad como en el tipo entre las variables y sus correspondientes especificaciones. Si se proveen más especificaciones que variables, el exceso es presentado con un valor indeterminado. Si se proveen menos especificaciones que variables, los valores de las variables sin especificaciones no son presentados. Si no existe correspondencia de tipo entre la variable y su especificación se obtienen resultados muy diferentes a la realidad; muy pocos compiladores verifican que exista esta correspondencia.
reserva la cantidad de columnas que comprenden el campo
presenta el valor en ese espacio justificado a la derecha
los ceros no significativos son cambiados a espacios en blanco
si el valor es negativo, presenta la raya de negativo en la posición a la izquierda del dígito más significativo
si el espacio provisto no es suficiente, realiza una acción que depende de cada lenguaje de programación de alto nivel. C y C++ expanden el campo hacia la derecha
%wd
% => signo que identifica una especificación de campo
w => ancho del campo
d => letra que identifica la especificación de punto fijo
( ld, i, li, o, lo, x, lx, X, lX, u, lu )
valor | formato | salida |
---|---|---|
12345 | %7d | bb12345 |
-12345 | %7d | b-12345 |
12345 | %5d | 12345 |
12345 | %3d | 12345 |
reserva la cantidad de columnas que comprenden el campo
presenta el punto decimal en la posición a la izquierda de la cantidad de lugares decimales solicitados, si se solicitaron
presenta los lugares decimales en el espacio reservado
si el espacio reservado es exactamente igual a la cantidad de lugares decimales solicitados se dejan así
si el espacio reservado es mayor que la cantidad de lugares decimales solicitados añade ceros a la derecha
si el espacio reservado es menor que la cantidad de lugares decimales solicitados redondea al último dígito solicitado
presenta la parte entera del valor en el espacio restante como con la especificación de punto fijo
%w.pf
% => signo que identifica una especificación de campo
w => ancho del campo
. => punto decimal
p => cantidad de lugares decimales deseados
f => letra que identifica la especificación de punto flotante
( g, lf, Lf, Lg )
valor | formato | salida |
---|---|---|
123.45f | %8.2f | bb123.45 |
123.45f | %8.3f | b123.450 |
123.45f | %8.1f | bbb123.5 |
123.45f | %4.2f | 123.45 |
reserva la cantidad de columnas que comprenden el campo
presenta la letra e ó E, según se haya especificado, en la cuarta columna de derecha a izquierda
presenta el punto decimal en la posición de la cantidad de lugares decimales solicitados a la izquierda de la letra e ó E
presenta los dígitos significativos, menos el primero, en el espacio reservado
presenta el exponente correspondiente a la derecha de la letra e ó E precedido por su signo ( + ó - ) y utilizando dos (2) dígitos
presenta el dígito más significativo a la izquierda del punto
si el valor es negativo, presenta la raya de negativo en la posición a la izquierda del dígito más significativo
si el espacio provisto no es suficiente, realiza una acción que depende de cada lenguaje de programación de alto nivel. C y C++ expanden el campo hacia la derecha
valor | formato | salida |
---|---|---|
123.45f | %11.4e | b1.2345e+02 |
123.45f | %11.5e | 1.23450e+02 |
123.45f | %11.3e | bb1.235e+02 |
123.45f | %8.4e | 1.2345e+02 |
reserva la cantidad de columnas que comprenden el campo
presenta el valor justificado a la derecha
presenta espacios en blanco a la izquierda
si el espacio provisto no es suficiente, realizar una acción que depende de cada lenguaje de programación de alto nivel. C y C++ expanden el campo hacia la derecha
%ws
% => signo que identifica una especificación de campo
w => ancho del campo
s => letra que identifica la especificación de caracteres
( c )
valor | formato | salida |
---|---|---|
"ABCDE" | %5s | ABCDE |
"ABCDE" | %10s | bbbbbABCDE |
"ABCDE" | %3s | ABCDE |
Se incluyen entre las especificaciones de los campos
Se incluyen entre las especificaciones de los campos
Se incluyen \n entre las especificaciones de los campos
Se preceden del símbolo \
Ejemplos : \\ \% \" \'
En el proceso de entrada los lenguajes C y C++ utilizan los espacios en blanco, los tabuladores, y el final de un registro como delimitadores (separadores).
lee un máximo de w columnas
verifica que entre los caracteres leídos sólo se encuentren: los dígitos del cero (0) al nueve (9), el signo positivo (+) ó el signo negativo (-) a la izquierda del dígito más significativo; la presencia de cualquier otro caracter causa que el valor no sea leído
convierte el valor a binario
deposita el valor en el espacio de memoria reservado para la variable
%wd
% => signo que identifica una especificación de campo
w => ancho del campo
d => letra que identifica la especificación de punto fijo
( ld, hd, i, li, hi, o, lo, ho, x, lx, hx, X, lX, hX, u, lu, hu )
entrada | formato | valor |
---|---|---|
12345 | %7d | 12345 |
-12345 | %7d | -12345 |
1234b5 | %5d | 1234 |
123456 | %3d | 123 |
lee un máximo de w columnas
verifica que entre los caracteres leídos sólo se encuentren: los dígitos del cero (0) al nueve (9), el punto decimal (.), la letra e ó E, el signo positivo (+) ó el signo negativo (-) a la izquierda del dígito más significativo; la presencia de cualquier otro caracter causa que el valor no sea leído
convierte el valor a binario
deposita el valor en el espacio de memoria reservado para la variable
%wf
% => signo que identifica una especificación de campo
w => ancho del campo
f => letra que identifica la especificación de punto flotante
( e, g, E, G, lf, le, lE, lg, lG, Lf, Le, Lg, LE, LG )
entrada | formato | valor |
---|---|---|
12345 | %8f | 12345.0f |
123.45 | %8f | 123.45f |
123.e5 | %8f | 12300000.0f |
123.45 | %4f | 123.0f |
lee un máximo de w columnas
si la cantidad de caracteres leídos excede el espacio reservado a la variable trunca a la derecha
convierte el valor a binario
deposita el valor en el espacio de memoria reservado para la variable
%ws
% => signo que identifica una especificación de campo
w => ancho del campo
s => letra que identifica la especificación de caracteres
( c )
entrada | formato | valor[5] |
---|---|---|
ABCDE | %5s | "ABCDE" |
ABCDEFGHI | %8s | "ABCDE" |
ABCDE | %3s | "ABCbb" |
ABC DEF | %7s | "ABCbb" |
Última modificación : jueves 25 de junio de 1998
©Derechos Reservados - 1991 - Prof. H. D. A. Cabassa