Otra variante de procedimientos que podemos escribir en Delphi/Pascal es la especificación de un valor a cargarse en el parámetro si no se le envían datos en su llamada.
Debemos utilizar el operador = y el valor a almacenar cuando declaramos el parámetro.
Confeccionar un procedimiento que muestre la suma de 2, 3 o 4 enteros que le enviemos como parámetros. El procedimiento debe funcionar independientemente que le enviemos 2, 3 o 4 datos.
program Proyecto105; {$APPTYPE CONSOLE} procedure Sumar(x1: Integer; x2: Integer; x3: Integer = 0; x4: Integer = 0); var suma: Integer; begin suma := x1 + x2 + x3 + x4; WriteLn('La suma es:', suma); end; begin WriteLn('La suma de 10 + 2:'); Sumar(10, 2); WriteLn('La suma de 7 + 2 + 60:'); Sumar(7, 2, 60); WriteLn('La suma de 1 + 2 + 3 + 4:'); Sumar(1, 2, 3, 4); ReadLn; end.
El procedimiento Sumar tiene 4 parámetros, los dos últimos son opcionales, en caso que no se le envíen se almacena un cero en dicho parámetro:
procedure Sumar(x1: Integer; x2: Integer; x3: Integer = 0; x4: Integer = 0);
Ahora podemos llamar al procedimiento Sumar enviando por ejemplo solo dos datos:
WriteLn('La suma de 10 + 2:'); Sumar(10, 2);
Pero también podemos llamar al procedimiento Sumar enviando 3 o 4 datos:
WriteLn('La suma de 7 + 2 + 60:'); Sumar(7, 2, 60); WriteLn('La suma de 1 + 2 + 3 + 4:'); Sumar(1, 2, 3, 4);
Hay que tener en cuenta estas reglas:
Confeccionar un procedimiento que reciba un String y lo muestre subrayado con asteriscos por defecto. En un segundo parámetro hacer que llegue el caracter que se muestre en el subrayado, si no llega utilizar el caracter '*'.
program Proyecto106; {$APPTYPE CONSOLE} procedure MostrarTitulo(titulo: String; caracter: Char = '*'); var f: Integer; begin WriteLn(titulo); for f:=1 to Length(titulo) do begin Write(caracter); end; WriteLn; end; begin MostrarTitulo('Sistema de Ventas'); WriteLn; MostrarTitulo('Ingresos de 2017', '-'); ReadLn; end.
En este problema hemos introducido un nuevo tipo de dato que existe en Delphi/Pascal llamado Char. En una variable de tipo Char podemos almacenar un único caracter a diferencia de un String que podemos almacenar múltiples caracteres.
Al procedimiento MostrarTitulo llegan dos parámetros, el segundo por defecto almacena el caracter '*'.
Luego si llamamos al procedimiento con un único parámetro el texto aparece subrayado con asteríscos:
MostrarTitulo('Sistema de Ventas');
Pero si lo llamamos enviando datos a los dos parámetros luego aparece subrayado con el caracter que le enviamos:
MostrarTitulo('Ingresos de 2017', '-');
Para que el procedimiento muestre el título subrayado procedemos mediante un for a imprimir el parámetro "caracter" tantas veces como carcteres tenga el parámetro "titulo".
Para saber la cantidad de caracteres de un String utilizamos la función Length que nos retorna este valor.
El resultado de ejecutar este programa es: