# Importando módulos
from qiskit import *

# Uma das formas de se inicializar um circuito quântico é usando "QuantumCircuit(x,y)" 
# que é armazenado em uma variável. 

# Nele, onde x é o número de qubits 
# e y o número de bits clássicos.

# Usamos os bits clássicos para armazenar as medições dos qubits.

nQubits = 2
nBits = 2
circuitoQuantico = QuantumCircuit(nQubits, nBits)

# Nesse caso cada qubit tem o seu bit aonde será armazenado seu valor após a medição
# (o primeiro bit armazena o valor do primeiro qubit, o segundo bit do segundo qubit,...)

# Logo depois de inicializar o circuito e durante todo o processo de adicionar as operações desejadas,
# podemos visualizar o circuito, chamando a função draw(output = 'mpl') pertencente a variável do circuito quântico

circuitoQuantico.draw(output = 'mpl')

# Depois de realizar as operações desejadas nos qubits, medimos chamando a função measure(x,y),
# pertencente a variável de circuito quântico.

# Nele o x e y são os ÍNDICES do qubit e bit respectivamente(lembrar que o índice começa a contar em 0).

circuitoQuantico.measure(0,0)
circuitoQuantico.measure(1,1)


# Chamando o draw() para exibir novamente o circuito, mas agora exibindo a medições

circuitoQuantico.draw(output = 'mpl')