Una subrutina es una parte separada del programa que tiene un nombre y resuelve su propia tarea separada. La subrutina se encuentra al comienzo del programa principal y se puede iniciar (llamar) desde el programa principal especificando el nombre
El uso de subrutinas le permite evitar la duplicación de código, en caso de que necesite escribir el mismo código en diferentes lugares del programa.
Las bibliotecas que se importan a un programa (por ejemplo, la biblioteca de matemáticas math) consisten en subrutinas que ya han sido compiladas por alguien. Los programadores no necesitan pensar en qué algoritmos implementarán, sino simplemente aplicarlos, pensando solo en lo que están haciendo exactamente. Este es un gran ahorro de tiempo. No es necesario escribir un algoritmo que ya haya sido escrito por otra persona.
Cada rutina
solo debe hacer una cosa: simplemente calcule algo, genere algunos datos o haga otra cosa.
Hay dos tipos de subrutinas:
procedimientos y
funciones
Las subrutinas realizan algunas acciones, como imprimir el resultado en la pantalla de cierta forma (un ejemplo simple, la declaración
writeln() es una subrutina estándar que imprime en información de la pantalla)
Las subrutinas de función
devuelven un resultado (número, cadena de caracteres, etc.) que podemos usar en el programa principal.
Tratemos de escribir un procedimiento simple:
Supongamos que necesitamos mostrar la cadena "Error" en la pantalla cada vez que puede ocurrir un error en el código por culpa del usuario (por ejemplo, cuando ingresa datos incorrectos)
Esto se puede hacer escribiendo la declaración
writeln('Error');
Y ahora imagine que esa línea debe insertarse en muchos lugares del programa. Por supuesto, puedes escribirlo en todas partes. Pero esta solución tiene dos inconvenientes.
1) esta cadena se almacenará en la memoria muchas veces
2) si queremos cambiar la salida en caso de error, tendremos que cambiar esta línea en todo el programa, lo cual es bastante inconveniente
Para tales casos, se necesitan procedimientos.
Un programa con un procedimiento podría verse así:
...
utilizando el espacio de nombres estándar;
procedimiento imprimirError(); // descripción del procedimiento
comenzar
writeln('Error'); // cuerpo del procedimiento: comandos que ejecutará el procedimiento
fin;
// programa principal
comenzar;
...
error de impresión(); // inicia el procedimiento para su ejecución. Solo especificamos el nombre del procedimiento que queremos ejecutar.
...
error de impresión();
...
fin.
El procedimiento comienza con la palabra procedure
. Después del nombre del procedimiento se escriben paréntesis, que indican las variables y sus tipos de las que depende la ejecución del procedimiento. Por ejemplo:
var a, b, respuesta: entero;
procedimiento Suma(a, b: entero);
empezar
respuesta := a + b;
fin;
Todas las sentencias que se ejecutan en un procedimiento están sangradas.
Los procedimientos se escriben antes que el programa principal
Para ejecutar un procedimiento, en el programa principal debe llamarlo por su nombre y recordar escribir paréntesis!
Puede llamar a un procedimiento en un programa cualquier número de veces.