子程序是程序的一个独立部分,它有一个名字并解决它自己的独立任务。子程序位于主程序的开头,可以通过指定名称从主程序启动(调用)
使用子例程可以避免代码重复,以防您需要在程序的不同位置编写相同的代码。
导入到程序中的库(例如,数学库 math)包含已经由某人编译的子例程。程序员不需要考虑他们实现了什么算法,而只是简单地应用它们,只考虑他们到底在做什么。这是一个很大的节省时间。没有必要去写别人已经写好的算法。
每个例程
应该只做一件事: 要么只是计算一些东西,要么输出一些数据,要么做其他事情。
有两种类型的子例程 -
过程和
函数
子例程执行一些操作,例如以某种形式将结果打印到屏幕(一个简单的例子,声明
writeln() 是一个标准的子例程,打印到屏幕信息)
函数子程序
返回一个结果(数字、字符串等),我们可以在主程序中使用。
让我们尝试编写一个简单的程序:
假设我们需要在屏幕上显示字符串“Error”每次由于用户的错误(例如,当他输入不正确的数据)而导致代码中出现错误时
这可以通过编写语句来完成
<前>
writeln('错误');
而现在想象一下,在程序的很多地方都需要插入这样一行。当然,你可以到处写。但是这个解决方案有两个缺点。
1)这个字符串会多次存入内存
2) 如果我们想改变错误的输出,我们将不得不在整个程序中改变这一行,这是相当不方便的
对于这种情况,需要程序。
带有过程的程序可能如下所示:
<前>
...
使用命名空间标准;
程序打印错误(); // 过程描述
开始
writeln(“错误”); // 过程主体 - 过程将执行的命令
结尾;
// 主程序
开始;
...
打印错误(); // 开始执行过程。我们只需指定要执行的过程的名称。
...
打印错误();
...
结尾。
该过程以单词
procedure
开头。 在过程名称后写有括号,表示过程执行所依赖的变量及其类型。例如:
var a, b, answer: integer;
程序 Sum(a, b: integer);
开始
答案:= a + b;
结束;
在过程中执行的所有语句都是缩进的。
程序写在主程序之前
要执行一个过程,您需要在主程序中调用它
按名称并记住写括号!
您可以多次调用程序中的过程。