文件示例

17 Mar 2025 | 阅读 2 分钟

示例 1

在下面的程序中,我们定义了一个 readterms 谓词。这个谓词用于从给定的文件中读取前四个术语。 它将这些术语输出到另一个指定的文件中,每行一个。

假设 textfile.txt 包含以下三行内容

将使用 readterms 生成以下输出。

以上创建了一个包含四行文本的文件。

以上表明,就其范围而言,readterms 的定义是正确的。由于最后两个术语,即 seentold,当前输入流和当前输出流设置为用户。如果一个大型程序将 readterms 用作子目标,并且当调用当前输入流和当前输出流时,它不一定是两个用户,那么上述定义就会出现问题。

当我们评估目标 readterms 时,为了将原始输入和输出流恢复为最后一步,它成为了一个良好的编程实践。在规则的主体中,我们可以使用 see(P)seeing(P) 来实现输入。 我们将这些谓词放在其他术语之前和之后。在开始时,P 绑定到当前输入流名称。在最后,它将当前输出流重置为 P

在规则的主体中,我们可以使用 tell(X)telling(X) 来实现输出。 我们将这些谓词放在其他术语之前和之后。在开始时,X 绑定到当前输出流名称。在最后,它将当前输出流重置为 X

根据上述约定,下面描述了 readterms 的修订定义

示例 2

为了复制字符输入,我们定义了一个 copychars 谓词,该谓词在用户的终端上,直到输入字符 ! 时才复制到指定的文件中。

在以下程序中,当前输入和输出流的值由 copychars 保存和恢复。 copy_character 任务被保留,该任务以与 Example of using charactersOutput and Input characters 的第一个示例中的 readin 相同的方式递归定义。

以下方式使用 copychars

这会将 javatpoint 字符放置在 myfile.txt 文件中。