Ejemplo n.º 1
0
        private void Loop()
        {
            var threadMaquina = new Thread(() =>
            {
                try
                {
                    while (!maquinaDeTuring.HaFinalizado())
                    {
                        if (maquinaDeTuring.EstaPausada())
                        {
                            return;
                        }
                        maquinaDeTuring    = maquinaDeTuring.Step();
                        var cintaProcesada = maquinaDeTuring.Cabezal.ObtenerCintaProcesada();
                        EscribirCintaProcesada(cintaProcesada);
                        ResaltarCaracterEntrada();
                        ResaltarFilaTablaDeTransiciones();
                        IncrementarPasos(maquinaDeTuring.Pasos.ToString());
                        Thread.Sleep(maquinaDeTuring.IntervaloDeTiempo * 1000);
                    }
                    Finalizo(maquinaDeTuring.EstadoActual);
                }
                catch (ArgumentException ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ocurrió un problema: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            });

            threadMaquina.Start();
        }
Ejemplo n.º 2
0
        private void btnGenerar_Click(object sender, EventArgs e)
        {
            try
            {
                Validar();

                maquinaDeTuring = new MaquinaDeTuring(
                    txtEstadoInicial.Text.Trim(),
                    new Cabezal(new List <char>(rtbEntrada.Text.Trim().ToCharArray())),
                    dgvTablaTransiciones,
                    int.Parse(txtIntervaloTiempo.Text));

                //Acciones sobre los controles de la sección configuración.
                //Textbox:
                rtbEntrada.Enabled         = false;
                rtbSalida.Enabled          = false;
                txtEstadoInicial.Enabled   = false;
                txtIntervaloTiempo.Enabled = false;
                txtEstado.Enabled          = false;
                txtLeer.Enabled            = false;
                txtEscribir.Enabled        = false;
                txtEstadoSiguiente.Enabled = false;
                //ComboBox:
                cmbCargarPruebas.Enabled = false;
                cmbDireccion.Enabled     = false;
                //Button:
                btnGenerar.Enabled = false;
                btnEditar.Enabled  = true;
                btnLimpiar.Enabled = false;
                btnAgregar.Enabled = false;

                //Acciones sobre los controles de la sección acciones
                //Button:
                btnCorrer.Enabled    = true;
                btnSiguiente.Enabled = true;
                btnPausar.Enabled    = false;
                btnDetener.Enabled   = false;

                //Flag para eliminar una fila de la grilla.
                PermiteBorrarFila = false;

                MessageBox.Show("La máquina de turing se ha generado correctamente, comience a utilizarla desde el panel de acciones.", "Máquina de turing", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocurrió un problema: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 3
0
        private void btnDetener_Click(object sender, EventArgs e)
        {
            try
            {
                if (maquinaDeTuring != null)
                {
                    maquinaDeTuring = new MaquinaDeTuring(
                        txtEstadoInicial.Text.Trim(),
                        new Cabezal(new List <char>(rtbEntrada.Text.Trim().ToCharArray())),
                        dgvTablaTransiciones,
                        int.Parse(txtIntervaloTiempo.Text));

                    maquinaDeTuring.CambiarEstadoAPausa();

                    foreach (DataGridViewRow dataGridViewRow in dgvTablaTransiciones.Rows)
                    {
                        dataGridViewRow.DefaultCellStyle.BackColor = SystemColors.Window;
                    }

                    rtbEntrada.Select(0, rtbEntrada.Text.Length);
                    rtbEntrada.SelectionColor = SystemColors.WindowText;

                    rtbSalida.Text = string.Empty;

                    txtEstadoFinal.Text      = string.Empty;
                    txtEstadoFinal.BackColor = SystemColors.Window;

                    txtPasos.Text = "0";

                    dgvTablaTransiciones.Update();
                    rtbEntrada.Update();
                }

                btnEditar.Enabled    = true;
                btnCorrer.Enabled    = true;
                btnSiguiente.Enabled = true;
                btnPausar.Enabled    = false;
                btnDetener.Enabled   = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocurrió un problema: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 4
0
        private void btnStep_Click(object sender, EventArgs e)
        {
            try
            {
                if (maquinaDeTuring == null)
                {
                    MessageBox.Show("Por favor, genere una maquina de turing.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                maquinaDeTuring.CambiarEstadoAEjecutandose();

                btnEditar.Enabled    = false;
                btnCorrer.Enabled    = true;
                btnSiguiente.Enabled = true;
                btnPausar.Enabled    = false;
                btnDetener.Enabled   = true;

                if (maquinaDeTuring.HaFinalizado())
                {
                    Finalizo(maquinaDeTuring.EstadoActual);
                    txtEstadoFinal.Text = maquinaDeTuring.EstadoActual;
                    return;
                }

                maquinaDeTuring = maquinaDeTuring.Step();
                rtbSalida.Text  = maquinaDeTuring.Cabezal.ObtenerCintaProcesada();
                ResaltarCaracterEntrada();
                ResaltarFilaTablaDeTransiciones();
                IncrementarPasos(maquinaDeTuring.Pasos.ToString());
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocurrió un problema: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }