Im Herzen von Wien
Hauptquartier
Löwengasse 14 / Lokal 2
1030 Wien, Österreich
Grundlagen der OpenQASM-Syntax
Das Verständnis der OpenQASM-Syntax ist entscheidend, wenn man lernt, Quantenprogramme zu schreiben. Da OpenQASM auf dem Fundament von QASM aufbaut und sich von klassischen Sprachen wie C und Assembly inspirieren lässt, besitzt es ein strukturiertes Regelwerk, um das Verhalten von Quantencomputern zu beschreiben. Dieses Kapitel führt in die grundlegenden Syntaxregeln von OpenQASM ein.
Anweisungen: die Bausteine
In OpenQASM ist eine Anweisung eine Instruktion, die eine bestimmte auszuführende Aktion vorgibt. Ein Programm ist im Wesentlichen eine Sammlung von Anweisungen, und jede muss mit einem Semikolon (;) abgeschlossen werden.
Anweisungen formatieren
Sie können eine Reihe von Anweisungen zur besseren Lesbarkeit in separate Zeilen schreiben:
statement1;
statement2;
statement3;
oder in dieselbe Zeile:
statement1; statement2; statement3; // Although valid, this is less readable
Es wird empfohlen, die erste Methode zu verwenden, um die Klarheit des Codes zu erhöhen.
Experiment: ein einfaches OpenQASM-Programm
Dies ist ein vollständiges Programm, das mehrere OpenQASM-Anweisungen zeigt, von denen jede eine eigene Quantenoperation ausführt. 12345678
// PhotonQ Experiment: A Simple OpenQASM Program [^8]
OPENQASM 2.0; // Specifies the OpenQASM version [^1]
include "qelib1.inc"; // Includes the standard library [^2]
// Declaration of quantum and classical registers
qreg qubits[2]; // Defines a quantum register with two qubits [^3]
creg ans[2]; // Defines a classical register with two bits [^4]
// Quantum gate application
h qubits[0]; // Applies a Hadamard gate to the first qubit [^5]
x qubits[1]; // Applies a Pauli-X gate to the second qubit [^6]
// Measure the qubit and save the result in the classical bit
measure qubits[0] -> ans[0]; // Measurement command [^7]
measure qubits[1] -> ans[1]; // Measurement command [^7]
Die von diesen Anweisungen ausgeführten Aktionen werden in späteren Kapiteln näher erläutert.
Whitespace: für OpenQASM kein Thema
OpenQASM behandelt alle Whitespace-Zeichen wie Leerzeichen, Tabulatoren und Zeilenumbrüche als unerheblich. Das bedeutet, dass Quantenoperationen von der Formatierung unberührt bleiben.
Whitespace wird ignoriert
Diese Codebeispiele zeigen, dass Whitespace die Logik eines Programms nicht verändert:
qreg qubits[2]; h qubits[0]; // Compact but valid
qreg qubits[2]; h qubits[0]; // Spread out, and still valid
Bezeichner: Namensgebung in OpenQASM
In OpenQASM sind Bezeichner benutzerdefinierte Namen für Variablen, Register und andere Entitäten. Um gültig zu sein, müssen sie einigen einfachen Regeln folgen:
- Sie beginnen mit einem Kleinbuchstaben.
- Sie enthalten nur alphanumerische Zeichen und Unterstriche (
_). - Sie stimmen mit keinem reservierten Schlüsselwort überein.
Gültige Beispiele: q, c, q0, q_, q_0.
Ungültige Beispiele: Q, C, Q0, _Q, 0_q.
Beachten Sie, dass OpenQASM zwischen Groß- und Kleinschreibung unterscheidet. Bezeichner wie q_a und q_A stehen für unterschiedliche Entitäten.
Während Sie diesen Leitfaden weiter durcharbeiten, werden Ihnen diese Syntaxgrundlagen in Fleisch und Blut übergehen, und bald werden Sie OpenQASM nutzen, um komplexe Quantenalgorithmen auszudrücken.