Include によるコードのモジュール化
煩雑さを避けて保守性を高めるために、量子プログラムではモジュール化が有効です。これはプログラムを複数のファイルに分割することで実現されます。OpenQASM はそのために include キーワードを提供しており、外部ファイルの内容をシームレスに利用できるようにしています。この章では、OpenQASM における include キーワードの使い方を説明します。
include 文
OpenQASM では、include 文が外部ファイルの内容を取り込み、それをメインファイルの一部として扱います。この方法は、インクルードされるファイルの内容を include 文の位置にコピーして貼り付けるのに似ています。
「filename.ext」という名前のファイルをインクルードするには次のようにします。
include "filename.ext";
使用例
たとえば、headerfile というファイルがあるとします。
// Common definitions and setups
statement1;
statement2;
そして、メインのプログラムファイル myprogram があるとします。
include "headerfile" // Includes "headerfile" here
statement3;
statement4;
インクルードの後、myprogram は次の内容を含んでいるかのように動作します。
// "headerfile" contents followed by "myprogram" contents
statement1;
statement2;
statement3;
statement4;
注記: インクルードするファイルが同じディレクトリにない場合は、現在の作業ディレクトリからの相対パスで指定する必要があります。
実験: qelib1.inc のインポート
この qelib1.inc ファイルは、多くの標準量子ゲートの定義を含んでいるため、OpenQASM プログラミングに欠かせません。プログラムへのインクルードは簡単です。12345
// PhotonQ Experiment: Importing qelib1.inc [^5]
OPENQASM 2.0; // Declares the version of OpenQASM [^1]
include "qelib1.inc"; // Brings in the standard gate definitions [^2]
// Quantum register declaration
qreg qubits[2]; // Defines a quantum register with two qubits [^3]
// Quantum gate application
h qubits[0]; // Applies a Hadamard gate to the first qubit [^4]
こうして qelib1.inc6 をインクルードすることで、量子回路で使えるさまざまな量子演算を利用できるようになります。
詳しくは、qelib1.inc ファイルに関する情報を次の資料で参照してください。