# Putting it All Together: Teleportation

Let's return to the example of the teleportation circuit defined in Quantum Circuits. Shown below is a text-book quantum circuit that implements the teleportation, including the quantum part, the measurements, and the classically-controlled correction operations.

We can now translate each of the steps in this quantum circuit into Q#. First, we begin the definition of a new operation while will perform the teleportation given two qubits msg and there:

operation Teleport(msg : Qubit, there : Qubit) : () {
body {


Next, we allocate a qubit here with a using block:

        using (register = Qubit[1]) {
let here = register[0];


We can then create the entangled pair between here and there by using the H and CNOT operations:

            H(here);
CNOT(here, there);


We then use the next $\operatorname{CNOT}$ and $H$ gates to move our message qubit:

            CNOT(msg, here);
H(msg);


Finally, we use M to perform the measurements and feed them into classical control, as denoted by if statements:

            // Measure out the entanglement.
if (M(msg) == One)  { Z(there); }
if (M(here) == One) { X(there); }


This finishes the definition of our teleportation operator, so we can deallocate here, end the body, and end the operation.

        }
}
}