Im Herzen von Wien

    Hauptquartier

    Löwengasse 14 / Lokal 2

    1030 Wien, Österreich

    Folge uns auf

    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.

    Footnotes

    1. Dokumentation zum Versions-String

    2. Dokumentation zu Include

    3. Dokumentation zu Quantenregistern

    4. Dokumentation zu klassischen Registern

    5. Dokumentation zum Hadamard-Gatter

    6. Dokumentation zum Pauli-X-Gatter

    7. Dokumentation zur Messung

    8. Experiment: ein einfaches OpenQASM-Programm

    Versions-String
    Include

    Links

    GitHub

    Telegram

    Facebook

    Instagram

    Impressum

    Copyright © 2024 Netsnek, Florian Herbert Kleber IT & Werbeagentur Nico Schett. All rights reserved.