Lección 4 · 4 de 20
Formatear la salida · Pascal
Dé forma a los números en Pascal: WriteLn con :ancho:decimales y la función Format de SysUtils para alinear las columnas del tique de una cafetería.

Sin indicaciones, WriteLn escribe un real en notación científica: 3.4560000000000000E+000. Con `:0:2` detrás del valor sale con dos decimales y redondeado, 3.46. El primer número es el ancho mínimo y el segundo, los decimales.
Si el ancho es mayor que el valor, se rellena con espacios por la izquierda: price:8:2 ocupa 8 caracteres, y 42:6 y 'tea':6 ocupan 6, alineados a la derecha. Es la forma más rápida de hacer columnas.
Para tener más control está `Format`, de la unit `SysUtils` (por eso el programa empieza con uses SysUtils;). Recibe un patrón y, entre corchetes, los valores que lo rellenan: %s es una cadena, %d un entero y %.2f un real con dos decimales.
Entre el % y la letra va el ancho: %4d ocupa 4 caracteres a la derecha y %-10s ocupa 10 a la izquierda, por el signo menos. Así quedan alineadas las columnas del tique. Para escribir un % de verdad se pone %%.
Código · main.pas
program main;uses SysUtils;var price: Double;begin price := 3.456; // With no format, a real number comes out in scientific notation. WriteLn(price); // :0:2 means as wide as needed, with two decimals. WriteLn(price:0:2); // :8:2 fills up to 8 characters, aligned to the right. WriteLn('[', price:8:2, ']'); WriteLn('[', 42:6, ']', '[', 'tea':6, ']'); // Format, from SysUtils, builds a string from a pattern. WriteLn(Format('%-10s%4s%9s', ['Item', 'Qty', 'Euros'])); WriteLn(Format('%-10s%4d%9.2f', ['Coffee', 2, 2.40])); WriteLn(Format('%-10s%4d%9.2f', ['Croissant', 3, 4.65])); WriteLn(Format('%-10s%4d%9.2f', ['Juice', 1, 2.10])); WriteLn(Format('%-14s%9.2f', ['Total', 9.15])); WriteLn(Format('VAT included: %d%%', [10]));end.Salida · fpc main.pas && ./main
3.4560000000000000E+000 3.46 [ 3.46] [ 42][ tea] Item Qty Euros Coffee 2 2.40 Croissant 3 4.65 Juice 1 2.10 Total 9.15 VAT included: 10%
Para recordar
valor:ancho:decimalesda formato enWriteLn.:0:2escribe dos decimales sin espacios de más.Format('patrón', [valores])está enSysUtils.%d,%sy%.2f; con-se alinea a la izquierda.
Ejercicio
Añada al tique una columna Unit con el precio de cada unidad (1.20, 1.55 y 2.10) y una línea más con dos tostadas a 1,80; corrija el total.