Diapositiva 1

Anuncio
ENTRADA / SALIDA
ESTÁNDAR
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
• Salida estándar: pantalla
printf (char * formato, …)
• formato: es una cadena de caracteres que
controla el formato de la información a imprimir.
Consiste en:
–
–
–
–
–
especificadores de conversión
banderas
anchos de campo
precisiones
caracteres literales
• … : argumentos variables en número y tipo
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Especificadores de formato
• Enteros:
– %d
– %i
– %u
– %hd
– %ld
– %o
– %X %x
– %p
entero decimal con signo
entero decimal con signo
entero decimal sin signo
entero short
entero long
entero en octal sin signo
entero en hexadecimal sin signo
puntero
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Especificadores de formato
• Ejemplos:
printf (“%d \n%i \n%d \n%d\n”, 455, 455, +455, -455);
455
455
455
-455
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Especificadores de formato
printf (“%hd \n%ld \n%u \n%u \n%o \n%x \n%X\n”,
32000,2000000000, 455, -455, 455, 455, 455);
32000
2000000000
455
65081
707
1c7
1C7
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Especificadores de formato
• Reales (precisión de 6 decimales):
– %f
– %e %E
– %g %G
real
real en notación exponencial
real en formato ‘f’ o ‘e’ sin
rellenar con ceros hasta los 6
decimales. El total de dígitos, por
defecto es también 6
– %lf %le %lE %lg %lG
para long double
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Especificadores de formato
• Ejemplo:
printf (%e \n%e \n%e \n%E \n%f \n%g \n%G\n”,
1234567.89, +1234567.89, -1234567.89,
1234567.89,1234567.89, 1234567.89,
1234567.89);
1.234568e+06
1.234568e+06
-1.234568e+06
1.234568E+06
1234567.890000
1.23457e+06
1.23457E+06
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Especificadores de formato
• Cadenas de caracteres y caracteres:
– %c
– %s
– %%
carácter
cadena de caracteres
%
• Ejemplo:
printf (“%c \n %% %s”, ‘ñ’, “superior”);
ñ
% superior
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Anchos de campo y precisión
• Ancho de campo: indica el número
exacto de posiciones reservado para
imprimir el dato
• Cuando el ancho de campo es mayor que
las posiciones necesarias para el dato,
éste se justifica a la dcha
• Forma:
%ancho especificador
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Anchos de campo y precisión
• Ejemplos:
printf (“%4d \n%4d \n%4d \n%4d\n”, 1,
12,123, 1234);
1
12
123
1234
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Anchos de campo y precisión
printf (“%4d \n%4d \n%4d \n%4d\n”, -1, -2,
-123, -1234);
-1
-12
-123
-1234
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Anchos de campo y precisión
• Precisión: depende del tipo de datos a los que
afecte:
– Enteros: número mínimo de dígitos a imprimir. Se
rellena con ceros a la izda hasta completar la precisión
(por defecto es 1)
– Reales: número de posiciones decimales que se
imprimirán. Con %g y %G, es el máximo número de
dígitos significativos a imprimir
– Cadenas: número máximo de caracteres a imprimir
• Forma:
%.precisión especificador
• Se puede combinar con el ancho de campo:
%ancho.precisión especificador
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Anchos de campo y precisión
• Ejemplos:
printf (“%9.3f \n%.4d \n%.9d\n”,
123.456789, 873, 873);
123.457
0873
000000873
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Anchos de campo y precisión
printf(“%.3f \n,%.3e \n%.3g\n”, 123.194536,
123.94536, 123.94536);
123.945
1.239e+02
124
printf(“%15s \n%.6s\n”, “hola”, “hola a todos”);
hola
hola a
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Anchos de campo y precisión
• El ancho y la precisión se pueden
especificar de forma variable
“%*.* especific”, ancho, precisión, valor
• Ejemplo:
printf (“%*.*f”, 7, 2, 34.821);
34.82
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Banderas
• - (signo menos): justificación a la izda dentro del ancho especificado
• + : pone un signo + delante de valores positivos y un signo – delante
de valores negativos
• Espacio : imprime un espacio delante de un valor positivo que no
lleve la bandera +
• #:
pone 0 delante de un valor en octal
pone 0x ó 0X delante de un valor hexadecimal
obliga a poner el punto decimal con los reales aunque
no se impriman decimales
con g o G, no se eliminan los ceros de la dcha
* 0 (cero) : rellena un campo numérico con ceros por la izda
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Banderas
• Ejemplos:
printf (“%10s%10d%10c%10f\n”, “hola”, 7, ‘a’, 1.23);
hola
7
a
1.230000
printf (“%-10s%-10d%-10c%-10f\n”, “hola”, 7, ‘a’, 1.23);
hola
7
a
1.230000
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Banderas
printf(“%+d \n%+d \n% d \n%+010d\n”,786, -786, 400, 452);
+786
-786
400
+000000452
printf (“%#xs% d\n”,455, 455);
0x1c7
455
Lenguajes de programación LPSI EUI UPM
SALIDA ESTÁNDAR - printf
Literales y secuencias de escape
• Los siguentes caracteres hay que
imprimirlos como una secuencia de escape:
\’
\” \? \\
\a (campana)
\b (borrar hacia atrás) \f (avance de página)
\n \r (mover el cursor al principio de la línea actual)
\t (tabulador horizontal)
\v (tabulador vertical)
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Entrada estándar: teclado
scanf (char * formato, …)
• formato: es una cadena de caracteres que
controla el formato de la información a leer.
Consiste en:
– especificadores de conversión
– anchos de campo
– Caracteres de rastreo
• …: argumentos variables en número y tipo
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Enteros:
– %d
entero decimal
– %i
entero decimal, octal o hexadecimal
– %u
entero sin signo
– %o
entero octal
– %x %X
entero hexadecimal
–h
precediendo a los anteriores, entero
corto
–l
precediendo a los anteriores, entero
largo
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Ejemplo:
scanf(“%d%i%i%i%o%u%x”,&a, &b, &c,
&d, &e, &f, &g);
-70 -70 070 0x70 70 70 70
printf(“%d %d %d %d %d %d %d\n”, a,
b, c, d, e, f, g);
-70 70 56 112 56 70 112
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Reales:
–
–
–
–
%f
%e %E
%g %G
Lol
precediendo a los anteriores, para leer
un double o un long double
• Ejemplo:
scanf(“%e%f%g”,&a, &b, &c);
1.27987
1.27987e+03
3.38476e-06
printf(“%f %f %f\n”, a, b, c);
1.279870 1279.869995 0.000003
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Caracteres y Cadenas de caracteres:
– %c
– %s
carácter
cadena
• Ejemplo:
scanf(“%c%s”, &c, cad);
Domingo
printf(“%c %s\n”, a, cad);
D
omingo
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Para leer secuencias de caracteres
• Forma:
– %[caracteres]
– %[^caracteres]
se toman de la entrada
caracteres incluidos en [ ].
Deja de buscar cuando
encuentra un carácter que
no está en el conjunto
se toman de la entrada
caracteres no incluidos en [ ].
Deja de buscar cuando
encuentra un carácter que
está en el conjunto
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Ejemplo:
scanf(“%[aeiou]”, cad);
aaaioueeoauggg
printf(“%s\n”, cad);
aaaioueeoau
scanf(“%[^aeiou]”, cad);
Trompetista
printf(“%s\n”, cad);
Tr
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Anchura de campo: para leer un número
específico de caracteres
• Ejemplo:
scanf(“%2d%d”, &a, &b);
23456
printf(“%d %d\n”, a, b);
23 456
scanf(“%6s”, cad);
Tararí que te vi
printf(“%s\n”, cad);
Tararí
Lenguajes de programación LPSI EUI UPM
ENTRADA ESTÁNDAR - scanf
• Saltar caracteres de la entrada: se
incluyen en el formato:
• Ejemplo:
scanf(“%2d-%2d-%d”,&dia, &mes, &anio);
12-10-06
printf(“%d %d %d\n”, dia, mes, anio);
12 10 06
scanf(“%2d*%2d*%d”,&dia, &mes, &anio);
12/10/06
printf(“%d %d %d\n”, dia, mes, anio);
12 10 06
Lenguajes de programación LPSI EUI UPM
Descargar