Determinar Quadrado Perfeito

C++Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como determinar se um determinado número é um quadrado perfeito em C++. Um quadrado perfeito é um número que pode ser expresso como o produto de um inteiro por si mesmo. Por exemplo, 1, 4, 9, 16 e 25 são quadrados perfeitos porque podem ser expressos como 1×1, 2×2, 3×3, 4×4 e 5×5, respectivamente.

Criaremos um programa C++ que usa a função sqrt() da biblioteca padrão para calcular a raiz quadrada de um número e determinar se ele é um quadrado perfeito. Este laboratório irá apresentá-lo a conceitos básicos de programação C++, incluindo funções, instruções condicionais e operações matemáticas.

Criar um Novo Arquivo C++ e Incluir as Bibliotecas Necessárias

Nesta etapa, criaremos um novo arquivo C++ e incluiremos as bibliotecas necessárias para o nosso programa.

Primeiro, vamos criar um novo arquivo chamado main.cpp no diretório do projeto:

  1. No WebIDE, clique no ícone Explorer na barra lateral esquerda.
  2. Clique com o botão direito na pasta project e selecione "New File" (Novo Arquivo).
  3. Nomeie o arquivo main.cpp e pressione Enter.

Agora, vamos adicionar as bibliotecas necessárias ao nosso programa. Precisamos de duas bibliotecas principais:

  • iostream: Esta biblioteca fornece funcionalidade para operações de entrada e saída.
  • cmath: Esta biblioteca contém funções matemáticas, incluindo a função sqrt() que usaremos.

Adicione o seguinte código ao seu arquivo main.cpp:

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    // We will add more code here in the next steps

    return 0;
}

Este código:

  • Inclui as bibliotecas necessárias.
  • Usa o namespace std para evitar ter que escrever std:: antes das funções da biblioteca padrão.
  • Cria uma função main() básica que exibe uma mensagem de boas-vindas.
  • Retorna 0 para indicar a execução bem-sucedida do programa.

Salve seu arquivo pressionando Ctrl+S ou selecionando File > Save (Arquivo > Salvar) no menu.

Implementar a Função de Verificação de Quadrado Perfeito

Agora, criaremos uma função que determina se um número é um quadrado perfeito. Um quadrado perfeito tem uma raiz quadrada inteira. Por exemplo, 16 é um quadrado perfeito porque sua raiz quadrada é exatamente 4.

Adicione a seguinte função acima da função main() no seu arquivo main.cpp:

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

Vamos entender como esta função funciona:

  1. A função recebe um parâmetro inteiro number e retorna um valor booleano (verdadeiro ou falso).
  2. Usamos a função sqrt() da biblioteca cmath para calcular a raiz quadrada do número de entrada.
  3. Convertemos a raiz quadrada em um inteiro usando static_cast<int>(), que remove qualquer parte decimal.
  4. Se o número for um quadrado perfeito, então multiplicar a raiz quadrada inteira por si mesma dará o número original.
  5. A função retorna true se o número for um quadrado perfeito e false caso contrário.

Por exemplo:

  • Para o número 16:
    • sqrt(16) = 4.0
    • Converter 4.0 em um inteiro dá 4
    • 4 × 4 = 16, que é igual ao número original, então 16 é um quadrado perfeito.
  • Para o número 10:
    • sqrt(10) ≈ 3.16227766
    • Converter 3.16227766 em um inteiro dá 3
    • 3 × 3 = 9, que não é igual ao número original, então 10 não é um quadrado perfeito.

Seu código completo até agora deve ser semelhante a este:

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    // We will add more code here in the next step

    return 0;
}

Salve seu arquivo antes de prosseguir para a próxima etapa.

Completar a Função Principal com Entrada e Saída do Usuário

Agora, vamos aprimorar a função main() para:

  1. Solicitar ao usuário que insira um número.
  2. Obter a entrada do usuário.
  3. Usar nossa função isPerfectSquare() para verificar se o número é um quadrado perfeito.
  4. Exibir uma mensagem apropriada com base no resultado.

Atualize sua função main() com o seguinte código:

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    int userNumber;

    // Prompt the user to enter a number
    cout << "Please enter a positive integer: ";
    cin >> userNumber;

    // Check if the entered number is a perfect square
    if (isPerfectSquare(userNumber)) {
        int squareRoot = static_cast<int>(sqrt(userNumber));
        cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
        cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
    } else {
        cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
    }

    cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;

    return 0;
}

Vamos entender o que este código faz:

  1. Declaramos uma variável inteira userNumber para armazenar a entrada do usuário.
  2. Solicitamos ao usuário que insira um inteiro positivo usando cout.
  3. Lemos a entrada do usuário usando cin e a armazenamos em userNumber.
  4. Chamamos nossa função isPerfectSquare() com userNumber como argumento.
  5. Se o número for um quadrado perfeito:
    • Calculamos sua raiz quadrada e a armazenamos em squareRoot.
    • Exibimos uma mensagem indicando que o número é um quadrado perfeito.
    • Mostramos quais dois inteiros idênticos se multiplicam para dar o número original.
  6. Se o número não for um quadrado perfeito:
    • Exibimos uma mensagem indicando que o número não é um quadrado perfeito.
  7. Finalmente, exibimos uma mensagem de agradecimento e retornamos da função main().

Seu programa completo agora deve ser semelhante a este:

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    int userNumber;

    // Prompt the user to enter a number
    cout << "Please enter a positive integer: ";
    cin >> userNumber;

    // Check if the entered number is a perfect square
    if (isPerfectSquare(userNumber)) {
        int squareRoot = static_cast<int>(sqrt(userNumber));
        cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
        cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
    } else {
        cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
    }

    cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;

    return 0;
}

Salve seu arquivo antes de prosseguir para a próxima etapa.

Compilar e Testar o Programa

Agora que concluímos nosso programa C++, é hora de compilar e executá-lo. A compilação converte nosso código legível por humanos em um programa executável por máquina.

Compilar o Programa

Abra um terminal no WebIDE clicando em "Terminal" no menu e selecionando "New Terminal".

No terminal, navegue até o diretório do projeto:

cd ~/project

Compile o programa usando o compilador g++:

g++ main.cpp -o perfect_square_checker

Este comando diz ao compilador para:

  • Pegar nosso arquivo fonte main.cpp
  • Compilá-lo em um executável chamado perfect_square_checker

Se a compilação for bem-sucedida, você não verá nenhuma saída. Se houver erros, leia as mensagens de erro, corrija os problemas em seu código e tente compilar novamente.

Executar o Programa

Após compilar o programa com sucesso, execute-o usando:

./perfect_square_checker

O programa iniciará e solicitará que você insira um inteiro positivo.

Testar com Diferentes Entradas

Vamos testar nosso programa com diferentes entradas para verificar se ele funciona corretamente:

Caso de Teste 1: Um Quadrado Perfeito

Insira 16 quando solicitado. Você deve ver uma saída semelhante a:

Please enter a positive integer: 16

The number 16 is a perfect square!
It is equal to 4 × 4

Thank you for using the Perfect Square Checker Program!

Caso de Teste 2: Não é um Quadrado Perfeito

Execute o programa novamente e insira 10 quando solicitado. Você deve ver uma saída semelhante a:

Please enter a positive integer: 10

The number 10 is not a perfect square.

Thank you for using the Perfect Square Checker Program!

Caso de Teste 3: Outro Quadrado Perfeito

Execute o programa novamente e insira 25 quando solicitado. Você deve ver uma saída semelhante a:

Please enter a positive integer: 25

The number 25 is a perfect square!
It is equal to 5 × 5

Thank you for using the Perfect Square Checker Program!

Ao testar com diferentes entradas, você pode verificar se seu programa identifica corretamente quadrados perfeitos e não quadrados perfeitos.

Parabéns! Você criou com sucesso um programa C++ que determina se um número é um quadrado perfeito.

Resumo

Neste laboratório, você criou com sucesso um programa C++ que determina se um número é um quadrado perfeito. Vamos revisar o que você realizou:

  1. Você aprendeu como incluir bibliotecas necessárias em um programa C++:

    • iostream para operações de entrada e saída
    • cmath para funções matemáticas como sqrt()
  2. Você implementou a função isPerfectSquare() que usa uma abordagem matemática para determinar se um número é um quadrado perfeito:

    • Calcula a raiz quadrada do número
    • Verifica se elevar ao quadrado a parte inteira da raiz quadrada é igual ao número original
  3. Você criou uma interface amigável no main() que:

    • Solicita ao usuário que insira um número
    • Usa a função isPerfectSquare() para verificar se o número é um quadrado perfeito
    • Exibe uma mensagem apropriada com base no resultado
  4. Você compilou e testou seu programa com diferentes entradas para verificar sua funcionalidade.

Através deste laboratório, você ganhou experiência prática com vários conceitos importantes de programação C++:

  • Criar e chamar funções
  • Usar instruções condicionais (if-else)
  • Trabalhar com entrada e saída do usuário
  • Realizar conversões de tipo
  • Usar funções matemáticas da biblioteca padrão
  • Compilar e executar um programa C++

Você pode aprimorar ainda mais este programa adicionando recursos como:

  • Validação de entrada para garantir que o usuário insira um inteiro positivo
  • A capacidade de verificar vários números sem reiniciar o programa
  • Encontrar o quadrado perfeito mais próximo de um número que não é um quadrado perfeito

Ao continuar a praticar e construir sobre esses conceitos fundamentais, você desenvolverá habilidades de programação C++ mais fortes que poderá aplicar a problemas mais complexos.