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:
- No WebIDE, clique no ícone Explorer na barra lateral esquerda.
- Clique com o botão direito na pasta
projecte selecione "New File" (Novo Arquivo). - Nomeie o arquivo
main.cppe 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çãosqrt()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 stdpara evitar ter que escreverstd::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:
- A função recebe um parâmetro inteiro
numbere retorna um valor booleano (verdadeiro ou falso). - Usamos a função
sqrt()da bibliotecacmathpara calcular a raiz quadrada do número de entrada. - Convertemos a raiz quadrada em um inteiro usando
static_cast<int>(), que remove qualquer parte decimal. - Se o número for um quadrado perfeito, então multiplicar a raiz quadrada inteira por si mesma dará o número original.
- A função retorna
truese o número for um quadrado perfeito efalsecaso 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:
- Solicitar ao usuário que insira um número.
- Obter a entrada do usuário.
- Usar nossa função
isPerfectSquare()para verificar se o número é um quadrado perfeito. - 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:
- Declaramos uma variável inteira
userNumberpara armazenar a entrada do usuário. - Solicitamos ao usuário que insira um inteiro positivo usando
cout. - Lemos a entrada do usuário usando
cine a armazenamos emuserNumber. - Chamamos nossa função
isPerfectSquare()comuserNumbercomo argumento. - 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.
- Calculamos sua raiz quadrada e a armazenamos em
- Se o número não for um quadrado perfeito:
- Exibimos uma mensagem indicando que o número não é um quadrado perfeito.
- 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:
Você aprendeu como incluir bibliotecas necessárias em um programa C++:
iostreampara operações de entrada e saídacmathpara funções matemáticas comosqrt()
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
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
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.



