コード例 #1
0
        public bool Calculo(bool P1, bool P2, TipOperacoes op)
        {
            switch (op)
            {
            case TipOperacoes.AND:
                return(Expressoes.And(P1, P2));

            case TipOperacoes.OR:
                return(Expressoes.Or(P1, P2));

            case TipOperacoes.IF:
                return(Expressoes.Iff(P1, P2));

            case TipOperacoes.IFTHEN:
                return(Expressoes.IfThen(P1, P2));

            //case TipOperacoes.NAND:
            //    return Expressoes.N(P1, P2);
            //case TipOperacoes.AND:
            //    return Expressoes.Na(P1, P2);
            //case TipOperacoes.AND:
            //    return Expressoes.And(P1, P2);
            //case TipOperacoes.AND:
            //    return Expressoes.And(P1, P2);
            default:
                throw new NotImplementedException();
            }
        }
コード例 #2
0
        //Cria e preencher a tabela verdade
        public static bool[,] CriarTabela()
        {
            // Numero de variaveis e de conectivos
            byte nVar = 9, nElem = 8;

            bool[,] tabela = new bool[(int)Math.Pow(2, nVar), nVar + nElem];  //Cria a tabela [linha , coluna]

            //Apenas para auxiliar o preenchimento das variaveis
            ushort aux = Convert.ToUInt16(Math.Pow(2, nVar - 1));  //Define numero de elementos true ou false
            ushort contRepet = 0, contCol = 0;

            //'col' = colunas
            for (ushort col = 0; col < tabela.GetLength(1); col++)
            {
                if (col < nVar)//Verifica se estah em uma coluna de variaveis. Se sim as preenche, se nao define os conectivos a partir das variaveis ja preenchidas
                {
                    //'row' = linhas
                    for (ushort row = 0; row < tabela.GetLength(0); row++)
                    {
                        contRepet++;

                        if (contRepet > (aux * 2))
                        {
                            contRepet = 1;
                        }

                        if (contRepet <= aux)
                        {
                            tabela[row, col] = true;
                        }
                        else
                        {
                            tabela[row, col] = false;
                        }
                    }
                    // Define ate que ponto vai ser True para depois passar para False
                    aux /= 2;
                }
                else//Define valor dos conectivos
                {
                    contCol++;//Para saber qual conectivo executar em cada coluna
                    //'row' = linhas
                    for (ushort row = 0; row < tabela.GetLength(0); row++)
                    {
                        switch (contCol)//Escolhe o conectivo pela coluna de conectivos
                        {
                        case 1:
                            tabela[row, col] = Expressoes.Not(tabela[row, 3 - 1]);
                            break;

                        case 2:
                            tabela[row, col] = Expressoes.Not(tabela[row, 5 - 1]);
                            break;

                        case 3:
                            tabela[row, col] = Expressoes.And(tabela[row, 2 - 1], tabela[row, 3 - 1]);
                            break;

                        case 4:
                            tabela[row, col] = Expressoes.And(tabela[row, 1 - 1], tabela[row, 9 - 1]);
                            break;

                        case 5:
                            tabela[row, col] = Expressoes.And(tabela[row, 2 - 1], Expressoes.And(tabela[row, (nVar + 2) - 1], tabela[row, 9 - 1]));
                            break;

                        case 6:
                            tabela[row, col] = Expressoes.IfThenElse(tabela[row, 4 - 1], tabela[row, 6 - 1], tabela[row, 7 - 1]);
                            break;

                        case 7:
                            tabela[row, col] = Expressoes.IfThenElse(tabela[row, (nVar + 1) - 1], tabela[row, (nVar + 4) - 1], tabela[row, (nVar + 5) - 1]);
                            break;

                        case 8:
                            tabela[row, col] = Expressoes.IfThenElse(tabela[row, (nVar + 3) - 1], tabela[row, (nVar + 6) - 1], tabela[row, (nVar + 7) - 1]);
                            break;
                        }
                    }
                }
            }
            return(tabela);
        }
コード例 #3
0
        //Teste individual
        public static void TesteIndividual()
        {
            byte op = 0;

            Console.Clear();
            Console.WriteLine(" PONTIFICIA UNIVERSIDADE CATOLICA DE MINAS GERAIS");
            Console.WriteLine(" TRABALHO INTERDISCIPLINAR");
            Console.WriteLine(" 1o PERIODO - SISTEMAS DE INFORMACAO");
            Console.WriteLine("\n");

            Console.WriteLine(" Escolha o conectivo a ser testado:\n");
            Console.WriteLine(" 1 - NOT.");
            Console.WriteLine(" 2 - AND.");
            Console.WriteLine(" 3 - OR.");
            Console.WriteLine(" 4 - IF...THEN.");
            Console.WriteLine(" 5 - IF...THEN...ELSE.");
            Console.WriteLine(" 6 - IFF.");
            Console.WriteLine(" 7 - ORR.");
            Console.WriteLine(" 0 - Sair do menu de conectivos\n");

            do
            {
                Console.Write(" Digite sua escolha => ");
                try
                {
                    op = Convert.ToByte(Console.ReadLine());
                }
                catch (OverflowException)
                {
                    op = 8;
                }

                bool t1, t2, t3;
                switch (op)
                {
                case 1:
                    Console.Write("\n Teste NOT (1 variavel)");
                    Console.Write("\n Digite o valor da variavel do teste (1 = true | 0 ou !=1 = false) => ");
                    t1 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;

                    Console.Write("\n NOT T1({0}) = {1}\n\n", t1, Expressoes.Not(t1));
                    break;

                case 2:
                    Console.Write("\n Teste AND (2 variaveis)");
                    Console.Write("\n Digite o valor da variavel 1 do teste (1 = true | 0 ou !=1 = false) => ");
                    t1 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;
                    Console.Write(" Digite o valor da variavel 2 do teste (1 = true | 0 ou !=1 = false) => ");
                    t2 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;

                    Console.Write("\n T1({0}) AND T2({1}) = {2}\n\n", t1, t2, Expressoes.And(t1, t2));
                    break;

                case 3:
                    Console.Write("\n Teste OR (2 variaveis)");
                    Console.Write("\n Digite o valor da variavel 1 do teste (1 = true | 0 ou !=1 = false) => ");
                    t1 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;
                    Console.Write(" Digite o valor da variavel 2 do teste (1 = true | 0 ou !=1 = false) => ");
                    t2 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;

                    Console.Write("\n T1({0}) OR T2({1}) = {2}\n\n", t1, t2, Expressoes.Or(t1, t2));
                    break;

                case 4:
                    Console.Write("\n Teste IF...THEN (2 variaveis)");
                    Console.Write("\n Digite o valor da variavel 1 do teste (1 = true | 0 ou !=1 = false) => ");
                    t1 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;
                    Console.Write(" Digite o valor da variavel 2 do teste (1 = true | 0 ou !=1 = false) => ");
                    t2 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;

                    Console.Write("\n IF T1({0}) THEN T2({1}) = {2}\n\n", t1, t2, Expressoes.IfThen(t1, t2));
                    break;

                case 5:
                    Console.Write("\n Teste IF...THEN...ELSE (3 variaveis)");
                    Console.Write("\n Digite o valor da variavel 1 do teste (1 = true | 0 ou !=1 = false) => ");
                    t1 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;
                    Console.Write(" Digite o valor da variavel 2 do teste (1 = true | 0 ou !=1 = false) => ");
                    t2 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;
                    Console.Write(" Digite o valor da variavel 3 do teste (1 = true | 0 ou !=1 = false) => ");
                    t3 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;

                    Console.Write("\n IF T1({0}) THEN T2({1}) ELSE T3({2}) = {3}\n\n", t1, t2, t3, Expressoes.IfThenElse(t1, t2, t3));
                    break;

                case 6:
                    Console.Write("\n Teste IFF (2 variaveis)");
                    Console.Write("\n Digite o valor da variavel 1 do teste (1 = true | 0 ou !=1 = false) => ");
                    t1 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;
                    Console.Write(" Digite o valor da variavel 2 do teste (1 = true | 0 ou !=1 = false) => ");
                    t2 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;

                    Console.Write("\n T1({0}) IFF T2({1}) = {2}\n\n", t1, t2, Expressoes.Iff(t1, t2));
                    break;

                case 7:
                    Console.Write("\n Teste ORR (2 variaveis)");
                    Console.Write("\n Digite o valor da variavel 1 do teste (1 = true | 0 ou !=1 = false) => ");
                    t1 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;
                    Console.Write(" Digite o valor da variavel 2 do teste (1 = true | 0 ou !=1 = false) => ");
                    t2 = Convert.ToInt32(Console.ReadLine()) == 1 ? true : false;

                    Console.Write("\n T1({0}) ORR T2({1}) = {2}\n\n", t1, t2, Expressoes.Orr(t1, t2));
                    break;

                default:
                    Console.WriteLine(" ERRO!!!");
                    Console.WriteLine(" Digito invalido!\n");
                    break;
                }
            } while (op != 0);
        }