DMarlon Studio

Lección 13 · 13 de 20

Procedimientos · Pascal

Agrupe código con nombre en procedimientos de Pascal, con parámetros y variables locales, para imprimir el tique de una panadería.

Pascal · Procedimientos en DMarlon Studio: el código del ejemplo y su salida en la terminal

Un procedimiento es un bloque de código con nombre que se escribe una vez y se llama tantas veces como haga falta. Se declara antes del begin principal, con `procedure`, su nombre y, entre paréntesis, sus parámetros.

PrintLine(width: Integer; symbol: Char) recibe dos datos: cuántos caracteres dibujar y cuál. Se llama con PrintLine(26, '=') y con PrintLine(26, '-'): el mismo código dibuja dos líneas distintas. En la declaración los parámetros se separan con punto y coma; en la llamada, con comas.

i es una variable local: se declara en el var del propio procedimiento y solo existe mientras este se ejecuta. Otro procedimiento puede tener su propia i sin que se mezclen.

PrintItem escribe una línea del tique y calcula el importe, qty * price, sin que el programa principal tenga que saber cómo. Greet saluda a cada cliente. Así, el programa principal queda corto y se lee como una lista de pasos.

En las aplicaciones de escritorio con Lazarus que genera DMarlon Studio, cada clic en un botón llama a un procedimiento como estos: es su manejador de eventos.

Código · main.pas

program main;// A procedure is a named block of code that you can call again and again.procedure PrintLine(width: Integer; symbol: Char);var  i: Integer;  // a local variable: it only exists insidebegin  for i := 1 to width do    Write(symbol);  WriteLn;end;procedure PrintItem(name: String; qty: Integer; price: Double);begin  WriteLn(name:8, qty:3, ' x', price:6:2, qty * price:8:2);end;procedure Greet(customer: String);begin  WriteLn('Welcome, ', customer, '!');end;begin  Greet('Marta');  PrintLine(26, '=');  PrintItem('Bread', 2, 1.20);  PrintItem('Milk', 3, 0.95);  PrintItem('Cheese', 1, 4.50);  PrintLine(26, '-');  Greet('Luis');end.

Salida · fpc main.pas && ./main

Welcome, Marta!
==========================
   Bread  2 x  1.20    2.40
    Milk  3 x  0.95    2.85
  Cheese  1 x  4.50    4.50
--------------------------
Welcome, Luis!

Para recordar

  • procedure Nombre(parámetros); declara un procedimiento.
  • Se llama por su nombre, con los valores entre paréntesis.
  • Las variables de su var son locales.
  • Un procedimiento evita repetir el mismo código.

Ejercicio

Escriba un procedimiento PrintTotal(amount: Double) que escriba la línea del total alineada con los importes y llámelo al final con 9.75.