Back-End

31 ago, 2015

Resolvendo 10 problemas de matemática em uma aplicação Console com Menu – Parte 01

Publicidade

No artigo de hoje, eu vou mostrar como criar uma aplicação console com um menu de opções para resolver 10 problemas matemáticos básicos usando a linguagem C#.

Você saber criar um menu de opções em uma aplicação Console? Sabe como tratar a seleção do usuário, executar a opção e retornar ao menu? Pois neste artigo eu vou mostrar como você pode realizar essas tarefas.

Os métodos da classe Console usados no exemplo são: o console é uma janela do sistema operacional em que os usuários interagem com o sistema operacional ou com um aplicativo de console baseado em texto para inserir a entrada de texto no teclado do computador, e à leitura de saída de texto de terminal do computador.

  • WriteLine: O método Console.Writeline escreve a linha atual para a saída padrão, no caso o Console. A linha padrão terminador é uma cadeia de caracteres cujo valor é um retorno de carro seguido por uma alimentação de linha (‘\r \n’ no C#, ou por vbCrLf no Visual Basic);
  • Write: O método Console.Writeline escreve a linha atual para a saída padrão;
  • ReadLine: Lê a próxima linha de caracteres da entrada padrão (Console);
  • ReadKey: Obtém o próximo caractere ou tecla de função pressionada pelo usuário.

Recursos usados: Microsoft Visual Studio 2013 Express for Windows Desktop.

Criando o projeto no Visual Studio 2013 Express for windows desktop

Abra o VS 2013 Express for windows desktop e clique em New Project. Selecione a linguagem Visual C# e o template Console Application. Depois informe o nome Matematica_CSharp e clique no botão OK.

c_mat11

Vamos agora definir as seguintes declarações dos namespaces usados:

using System;

A seguir, vamos definir o código na rotina Main() do arquivo Programa.cs que chama o método Menu() para criar o menu de opções:

static void Main(string[] args)
{
       Menu();
}

O código do menu exibe os 10 problemas matemáticos enumerados, onde o usuário deverá teclar o número referente a respectiva opção para resolver o problema:

public static void Menu()
 {
            Console.Clear();
            Console.WriteLine("1. Gerar a Série de Fibonacci" +
            Environment.NewLine + "2. Gerar o Fatorial de um Número" +
            Environment.NewLine + "3. Gerar a Soma de N Números" +
            Environment.NewLine + "4. Obter os fatores de um número" +
            Environment.NewLine + "5. Verificar se um número é um número de Armstrong" +
            Environment.NewLine + "6. Verificar se um número é um número Perfeito" +
            Environment.NewLine + "7. Calcular o MDC entre dois números" +
            Environment.NewLine + "8. Calcular o MMC entre dois números" +
            Environment.NewLine + "9. Verificar se um número é Primo" +
            Environment.NewLine + "10. Calcular a raiz cúbica de um número" +
            Environment.NewLine + "");
            var resposta = Console.ReadLine();
            int escolha = 0;
            if (int.TryParse(resposta, out escolha))
            {
                switch (escolha)
                {
                    case 1:
                        Cabecalho("Gerar Série de Fibonaci");
                        Gerar_Serie_Fibonaci();
                        break;
                    case 2:
                        Cabecalho("Gerar Fatorial de um número.");
                        Gerar_Fatorial_Numero();
                        break;
                    case 3:
                        Cabecalho("Gerar Soma de N números");
                        Gerar_Soma_Numeros();
                        break;
                    case 4:
                        Cabecalho("Obter os fatores de um número");
                        Obter_Fatores_Numero();
                        break;
                    case 5:
                        Cabecalho("Verificar se um número e um número de Armstrong");
                        Verificar_Numero_Armstrong();
                        break;
                    case 6:
                        Cabecalho("Verificar se um número é um número Perfeito");
                        Verificar_Numero_Armstrong();
                        break;
                    case 7:
                        Cabecalho("Calcular o MDC entre dois números");
                        CalcularMaiorDivisorComum();
                        break;
                    case 8:
                        Cabecalho("Calcular o MMC entre dois números");
                        CalcularMenorMultiploComum();
                        break;
                    case 9:
                        Cabecalho("Verificar se um número é Primo");
                        VerificarNumerosPrimos();
                        break;
                    case 10:
                        Cabecalho("Calcular a raiz cúbica de um número");
                        Calcular_Raiz_Cubica();
                        break;
                    default:
                        Console.WriteLine("Opção Incorreta!!!" +
                        Environment.NewLine + "Pressione qualquer tecla para Sair");
                        Console.ReadKey();
                        break;
                }
            }
            else
            {
                Console.WriteLine("Informe somente valores numéricos!!!" +
                Environment.NewLine + "Pressione qualquer tecla para Sair");
                Console.ReadKey();
            }
        }

No código estamos usando o comando Switch para simular muitas condições if..else. Todos os tipos primitivos (int, string, decimal, short etc) podem ser usados nas instruções switch/case.

Cada rótulo Case especifica um valor constante onde a expressão de opção transfere o controle para a seção switch, cujo rótulo Case corresponde ao valor da expressão switch.

Note que usamos instruções break para sair do bloco. Sem isto o próximo bloco Case seria executado.

A seguir, temos o código dos métodos que serão usados para exibir o cabeçalho, o rodapé e imprimir um texto no console:

public static void Cabecalho(string texto)
        {
            Console.WriteLine("==================================================");
            Console.WriteLine(texto);
            Console.WriteLine("==================================================");
        }
        public static void Rodape(string texto)
        {
                Console.WriteLine(texto);
                Console.ReadLine();
        }
        public static void Texto(string texto)
        {
            Console.WriteLine(texto);
        }

Agora temos o código de cada um dos métodos que são chamados pela respectiva opção do menu para resolver o problema.

Abaixo temos os 5 primeiros métodos:

  1. Gerar_Serie_Fibonacci

  2. Gerar_Fatorial_Numero

  3. Gerar_Soma_Numeros

  4. Obter_Fatores_Numero

  5. Verificar_Numero_Armstrong

Agora, que tal você tentar resolver cada um desses problemas para exercitar as suas habilidades na linguagem C#? A aplicação já esta praticamente montada e só falta você definir 5 métodos com o código para resolver cada problema.

Vou interromper o artigo aqui para que você possa continuar por si mesmo e tente resolver o problema, ok?!

A seguir, vou dar as definições de alguns termos para ajudar na resolução:

  1. Número de Fibonacci – Na matemática, a Sucessão de Fibonacci (também Sequência de Fibonacci), é uma sequência de números inteiros, começando normalmente por 0 e 1, na qual, cada termo subsequente (número de Fibonacci) corresponde a soma dos dois anteriores. Ex: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, … (podendo ser omitido o zero inicial)

  2. Fatorial – Na matemática, o fatorial de um número natural n, representado por n!, é o produto de todos os inteiros positivos menores ou iguais a n. A notação n! foi introduzida por Christian Kramp em 1808.

  3. Fatores – Todo número inteiro positivo, maior do que um, pode ser escrito univocamente como o produto de vários números primos (chamados fatores primos). Ao processo que recebe como argumento um número e devolve os seus fatores primos chama-se decomposição em fatores primos.

  4. Número de Armstrong – O conceito da álgebra para um número de Armstrong diz que é um número de n dígitos que é igual a soma de cada um dos seus dígitos elevado a n-ésima potência. Por exemplo, 153 (n = três dígitos) é igual a 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153

Após terminar, confira o seu resultado continuando a leitura no próximo artigo da série.

Você pode ver a resolução dos 5 problemas de matemática em uma aplicação Console com Menu neste artigo.