7 Projetos em C: Inspirações Incríveis!

O C é uma linguagem de programação amplamente utilizada e reconhecida por sua eficiência e flexibilidade.

Aprender C é uma excelente base para desenvolver habilidades de programação, pois proporciona uma compreensão profunda dos conceitos fundamentais.

Neste artigo, apresentaremos sete projetos em C que irão ajudá-lo a aprender essa linguagem poderosa e versátil.

Projeto 1: Calculadora Simples em C

Uma calculadora simples é um projeto ideal para iniciar sua jornada de aprendizado em C.

Com esse projeto, você criará uma calculadora básica capaz de realizar operações matemáticas como adição, subtração, multiplicação e divisão.

O objetivo é familiarizar-se com a sintaxe do C e entender como realizar cálculos simples.

Aqui está um exemplo de código para a calculadora em C#:

#include <stdio.h>

int main() {
   float num1, num2, resultado;
   int operador;

   printf("Digite o primeiro número: ");
   scanf("%f", &num1);

   printf("Digite o segundo número: ");
   scanf("%f", &num2);

   printf("Selecione o operador:\n");
   printf("1 - Adição\n");
   printf("2 - Subtração\n");
   printf("3 - Multiplicação\n");
   printf("4 - Divisão\n");

   scanf("%d", &operador);

   switch (operador) {
      case 1:
         resultado = num1 + num2;
         printf("Resultado: %.2f\n", resultado);
         break;
      case 2:
         resultado = num1 - num2;
         printf("Resultado: %.2f\n", resultado);
         break;
      case 3:
         resultado = num1 * num2;
         printf("Resultado: %.2f\n", resultado);
         break;
      case 4:
         if (num2 != 0) {
            resultado = num1 / num2;
            printf("Resultado: %.2f\n", resultado);
         } else {
            printf("Divisão por zero não é permitida.\n");
         }
         break;
      default:
         printf("Operador inválido.\n");
         break;
   }

   return 0;
}

Projeto 2: Cadastro de Clientes em C

Um projeto de cadastro de clientes é uma maneira prática de entender como armazenar e gerenciar dados usando a linguagem C.

Neste projeto, você criará um sistema simples para cadastrar clientes, onde poderá adicionar, visualizar, editar e excluir informações dos clientes.

O objetivo é praticar a manipulação de dados e o uso de estruturas de controle.

#include <stdio.h>
#include <stdlib.h>

struct Cliente {
   char nome[100];
   char email[100];
};

int main() {
   struct Cliente clientes[100];
   int opcao, numClientes = 0;

   do {
      printf("Selecione uma opção:\n");
      printf("1 - Adicionar cliente\n");
      printf("2 - Visualizar clientes\n");
      printf("3 - Editar cliente\n");
      printf("4 - Excluir cliente\n");
      printf("5 - Sair\n");

      scanf("%d", &opcao);

      switch (opcao) {
         case 1: {
            printf("Digite o nome do cliente: ");
            scanf("%s", clientes[numClientes].nome);

            printf("Digite o email do cliente: ");
            scanf("%s", clientes[numClientes].email);

            numClientes++;

            printf("Cliente adicionado com sucesso.\n");
            break;
         }
         case 2: {
            printf("Clientes cadastrados:\n");

            for (int i = 0; i < numClientes; i++) {
               printf("Nome: %s\n", clientes[i].nome);
               printf("Email: %s\n", clientes[i].email);
               printf("----------------------\n");
            }
            break;
         }
         case 3: {
            char nome[100];

            printf("Digite o nome do cliente que deseja editar: ");
            scanf("%s", nome);

            for (int i = 0; i < numClientes; i++) {
               if (strcmp(clientes[i].nome, nome) == 0) {
                  printf("Digite o novo nome do cliente: ");
                  scanf("%s", clientes[i].nome);

                  printf("Digite o novo email do cliente: ");
                  scanf("%s", clientes[i].email);

                  printf("Cliente editado com sucesso.\n");
                  break;
               }
            }
            break;
         }
         case 4: {
            char nome[100];

            printf("Digite o nome do cliente que deseja excluir: ");
            scanf("%s", nome);

            for (int i = 0; i < numClientes; i++) {
               if (strcmp(clientes[i].nome, nome) == 0) {
                  for (int j = i; j < numClientes - 1; j++) {
                     clientes[j] = clientes[j + 1];
                  }

                  numClientes--;

                  printf("Cliente excluído com sucesso.\n");
                  break;
               }
            }
            break;
         }
         case 5:
            printf("Encerrando o programa...\n");
            break;
         default:
            printf("Opção inválida.\n");
            break;
      }
   } while (opcao != 5);

   return 0;
}

Projeto 3: Jogo da Velha em C

O jogo da velha é um projeto divertido que permite explorar conceitos de lógica e estruturas de controle em C.

Neste projeto, você criará uma versão simples do jogo da velha, onde dois jogadores poderão competir.

O programa solicitará as jogadas dos jogadores e verificará se houve um vencedor ou se o jogo empatou.

#include <stdio.h>

char tabuleiro[3][3] = {
   {'-', '-', '-'},
   {'-', '-', '-'},
   {'-', '-', '-'}
};

char jogadorAtual = 'X';
int jogoAcabou = 0;

void inicializarTabuleiro() {
   for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++) {
         tabuleiro[i][j] = '-';
      }
   }
}

void exibirTabuleiro() {
   printf("-----\n");
   for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++) {
         printf("%c", tabuleiro[i][j]);
      }
      printf("\n");
   }
   printf("-----\n");
}

void fazerJogada() {
   int linha, coluna;

   printf("Jogador %c, faça sua jogada.\n", jogadorAtual);

   printf("Digite a linha: ");
   scanf("%d", &linha);

   printf("Digite a coluna: ");
   scanf("%d", &coluna);

   if (tabuleiro[linha][coluna] == '-') {
      tabuleiro[linha][coluna] = jogadorAtual;
   } else {
      printf("Essa posição já está ocupada. Tente novamente.\n");
      fazerJogada();
   }
}

int verificarVencedor() {
   // Verificar linhas
   for (int i = 0; i < 3; i++) {
      if (tabuleiro[i][0] == jogadorAtual && tabuleiro[i][1] == jogadorAtual && tabuleiro[i][2] == jogadorAtual) {
         return 1;
      }
   }

   // Verificar colunas
   for (int i = 0; i < 3; i++) {
      if (tabuleiro[0][i] == jogadorAtual && tabuleiro[1][i] == jogadorAtual && tabuleiro[2][i] == jogadorAtual) {
         return 1;
      }
   }

   // Verificar diagonais
   if ((tabuleiro[0][0] == jogadorAtual && tabuleiro[1][1] == jogadorAtual && tabuleiro[2][2] == jogadorAtual) ||
       (tabuleiro[0][2] == jogadorAtual && tabuleiro[1][1] == jogadorAtual && tabuleiro[2][0] == jogadorAtual)) {
      return 1;
   }

   return 0;
}

int verificarEmpate() {
   for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++) {
         if (tabuleiro[i][j] == '-') {
            return 0;
         }
      }
   }
   return 1;
}

void alternarJogador() {
   jogadorAtual = (jogadorAtual == 'X') ? 'O' : 'X';
}

int main() {
   inicializarTabuleiro();

   while (!jogoAcabou) {
      exibirTabuleiro();
      fazerJogada();

      if (verificarVencedor()) {
         exibirTabuleiro();
         printf("Jogador %c venceu!\n", jogadorAtual);
         jogoAcabou = 1;
      } else if (verificarEmpate()) {
         exibirTabuleiro();
         printf("O jogo empatou.\n");
         jogoAcabou = 1;
      }

      alternarJogador();
   }

   return 0;
}

Projeto 4: Aplicativo de Notas em C

O aplicativo de notas em C permite que você crie um programa para armazenar e gerenciar notas.

Nesse projeto, você implementará funções para adicionar, visualizar, editar e excluir notas.

Cada nota terá um título e um conteúdo associado. Você pode armazenar as notas em uma estrutura de dados, como uma lista.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Nota {
   char titulo[100];
   char conteudo[1000];
};

int main() {
   struct Nota notas[100];
   int opcao, numNotas = 0;

   do {
      printf("Selecione uma opção:\n");
      printf("1 - Adicionar nota\n");
      printf("2 - Visualizar notas\n");
      printf("3 - Editar nota\n");
      printf("4 - Excluir nota\n");
      printf("5 - Sair\n");

      scanf("%d", &opcao);

      switch (opcao) {
         case 1: {
            printf("Digite o título da nota: ");
            scanf("%s", notas[numNotas].titulo);

            printf("Digite o conteúdo da nota: ");
            scanf(" %[^\n]s", notas[numNotas].conteudo);

            numNotas++;

            printf("Nota adicionada com sucesso.\n");
            break;
         }
         case 2: {
            printf("Notas cadastradas:\n");

            for (int i = 0; i < numNotas; i++) {
               printf("Título: %s\n", notas[i].titulo);
               printf("Conteúdo: %s\n", notas[i].conteudo);
               printf("----------------------\n");
            }
            break;
         }
         case 3: {
            char titulo[100];

            printf("Digite o título da nota que deseja editar: ");
            scanf("%s", titulo);

            for (int i = 0; i < numNotas; i++) {
               if (strcmp(notas[i].titulo, titulo) == 0) {
                  printf("Digite o novo título da nota: ");
                  scanf("%s", notas[i].titulo);

                  printf("Digite o novo conteúdo da nota: ");
                  scanf(" %[^\n]s", notas[i].conteudo);

                  printf("Nota editada com sucesso.\n");
                  break;
               }
            }
            break;
         }
         case 4: {
            char titulo[100];

            printf("Digite o título da nota que deseja excluir: ");
            scanf("%s", titulo);

            for (int i = 0; i < numNotas; i++) {
               if (strcmp(notas[i].titulo, titulo) == 0) {
                  for (int j = i; j < numNotas - 1; j++) {
                     notas[j] = notas[j + 1];
                  }

                  numNotas--;

                  printf("Nota excluída com sucesso.\n");
                  break;
               }
            }
            break;
         }
         case 5:
            printf("Encerrando o programa...\n");
            break;
         default:
            printf("Opção inválida.\n");
            break;
      }
   } while (opcao != 5);

   return 0;
}

Projeto 5: Conversor de Moedas em C

O projeto do conversor de moedas em C é uma excelente oportunidade para aprender como lidar com cálculos matemáticos e manipulação de valores monetários.

Nesse projeto, você criará um programa que permite converter valores entre diferentes moedas, como Real, Dólar e Euro.

Você precisará consultar a taxa de câmbio atual e realizar os cálculos necessários para a conversão.

#include <stdio.h>

int main() {
   float valorReal, taxaCambio, valorDolar, valorEuro;
   int opcao;

   printf("Bem-vindo ao Conversor de Moedas!\n");

   do {
      printf("Selecione uma opção:\n");
      printf("1 - Real para Dólar\n");
      printf("2 - Real para Euro\n");
      printf("3 - Dólar para Real\n");
      printf("4 - Euro para Real\n");
      printf("5 - Sair\n");

      scanf("%d", &opcao);

      switch (opcao) {
         case 1: {
            printf("Digite o valor em Real: ");
            scanf("%f", &valorReal);

            taxaCambio = 5.23; // Taxa de câmbio do dólar em relação ao real

            valorDolar = valorReal / taxaCambio;

            printf("Valor em Dólar: %.2f\n", valorDolar);
            break;
         }
         case 2: {
            printf("Digite o valor em Real: ");
            scanf("%f", &valorReal);

            taxaCambio = 6.19; // Taxa de câmbio do euro em relação ao real

            valorEuro = valorReal / taxaCambio;

            printf("Valor em Euro: %.2f\n", valorEuro);
            break;
         }
         case 3: {
            printf("Digite o valor em Dólar: ");
            scanf("%f", &valorDolar);

            taxaCambio = 5.23; // Taxa de câmbio do dólar em relação ao real

            valorReal = valorDolar * taxaCambio;

            printf("Valor em Real: %.2f\n", valorReal);
            break;
         }
         case 4: {
            printf("Digite o valor em Euro: ");
            scanf("%f", &valorEuro);

            taxaCambio = 6.19; // Taxa de câmbio do euro em relação ao real

            valorReal = valorEuro * taxaCambio;

            printf("Valor em Real: %.2f\n", valorReal);
            break;
         }
         case 5:
            printf("Encerrando o programa...\n");
            break;
         default:
            printf("Opção inválida.\n");
            break;
      }
   } while (opcao != 5);

   return 0;
}

Projeto 6: Gerador de Senhas em C

O projeto do gerador de senhas em C é uma ótima maneira de praticar a geração aleatória de dados e a manipulação de strings.

Nesse projeto, você criará um programa que gera senhas seguras com base nos requisitos do usuário, como comprimento, inclusão de letras maiúsculas, minúsculas, números e caracteres especiais.

O programa fornecerá uma senha aleatória que atenda aos critérios especificados pelo usuário.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

void gerarSenha(int comprimento, int incluirMaiusculas, int incluirMinusculas, int incluirNumeros, int incluirEspeciais) {
   const char caracteresMaiusculos[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   const char caracteresMinusculos[] = "abcdefghijklmnopqrstuvwxyz";
   const char caracteresNumeros[] = "0123456789";
   const char caracteresEspeciais[] = "!@#$%^&*()";

   char caracteresPermitidos[100] = "";

   if (incluirMaiusculas) {
      strcat(caracteresPermitidos, caracteresMaiusculos);
   }
   if (incluirMinusculas) {
      strcat(caracteresPermitidos, caracteresMinusculos);
   }
   if (incluirNumeros) {
      strcat(caracteresPermitidos, caracteresNumeros);
   }
   if (incluirEspeciais) {
      strcat(caracteresPermitidos, caracteresEspeciais);
   }

   srand(time(0));

   for (int i = 0; i < comprimento; i++) {
      int index = rand() % strlen(caracteresPermitidos);
      printf("%c", caracteresPermitidos[index]);
   }
   printf("\n");
}

int main() {
   int comprimento, incluirMaiusculas, incluirMinusculas, incluirNumeros, incluirEspeciais;

   printf("Bem-vindo ao Gerador de Senhas!\n");

   printf("Digite o comprimento da senha: ");
   scanf("%d", &comprimento);

   printf("Incluir letras maiúsculas? (1 - Sim / 0 - Não): ");
   scanf("%d", &incluirMaiusculas);

   printf("Incluir letras minúsculas? (1 - Sim / 0 - Não): ");
   scanf("%d", &incluirMinusculas);

   printf("Incluir números? (1 - Sim / 0 - Não): ");
   scanf("%d", &incluirNumeros);

   printf("Incluir caracteres especiais? (1 - Sim / 0 - Não): ");
   scanf("%d", &incluirEspeciais);

   gerarSenha(comprimento, incluirMaiusculas, incluirMinusculas, incluirNumeros, incluirEspeciais);

   return 0;
}

Projeto 7: Aplicativo de Previsão do Tempo em C

O projeto do aplicativo de previsão do tempo em C é uma oportunidade emocionante de trabalhar com APIs e fornecer informações em tempo real aos usuários.

Nesse projeto, você criará um programa que consulta uma API de previsão do tempo e exibe os dados para uma cidade específica.

Você precisará fazer solicitações HTTP para a API, analisar os dados retornados e exibir as informações relevantes para o usuário.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <json-c/json.h>

struct MemoryStruct {
   char* memory;
   size_t size;
};

size_t escreverDados(void* contents, size_t size, size_t nmemb, struct MemoryStruct* userp) {
   size_t realsize = size * nmemb;
   userp->memory = realloc(userp->memory, userp->size + realsize + 1);
   if (userp->memory == NULL) {
      printf("Erro de alocação de memória.\n");
      return 0;
   }
   memcpy(&(userp->memory[userp->size]), contents, realsize);
   userp->size += realsize;
   userp->memory[userp->size] = 0;

   return realsize;
}

void obterPrevisaoTempo(char* cidade) {
   CURL* curl;
   CURLcode res;

   struct MemoryStruct dados;
   dados.memory = malloc(1);
   dados.size = 0;

   char url[1000];
   sprintf(url, "https://api.openweathermap.org/data/2.5/weather?q=%s&appid=SUA_CHAVE_DE_API", cidade);

   curl_global_init(CURL_GLOBAL_DEFAULT);
   curl = curl_easy_init();

   if (curl) {
      curl_easy_setopt(curl, CURLOPT_URL, url);
      curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, escreverDados);
      curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&dados);

      res = curl_easy_perform(curl);

      if (res != CURLE_OK) {
         printf("Erro ao fazer a requisição: %s\n", curl_easy_strerror(res));
      } else {
         struct json_object* jsonObject = json_tokener_parse(dados.memory);

         if (jsonObject == NULL) {
            printf("Erro ao analisar os dados da previsão do tempo.\n");
         } else {
            struct json_object* nomeObj;
            struct json_object* mainObj;
            struct json_object* tempObj;
            struct json_object* weatherObj;
            struct json_object* descricaoObj;

            json_object_object_get_ex(jsonObject, "name", &nomeObj);
            json_object_object_get_ex(jsonObject, "main", &mainObj);
            json_object_object_get_ex(mainObj, "temp", &tempObj);
            json_object_object_get_ex(jsonObject, "weather", &weatherObj);
            json_object_array_get_idx(weatherObj, 0, &descricaoObj);

            printf("Cidade: %s\n", json_object_get_string(nomeObj));
            printf("Temperatura: %.2f°C\n", json_object_get_double(tempObj) - 273.15);
            printf("Condição: %s\n", json_object_get_string(descricaoObj));
         }
      }

      curl_easy_cleanup(curl);
   }

   curl_global_cleanup();

   free(dados.memory);
}

int main() {
   char cidade[100];

   printf("Bem-vindo ao Aplicativo de Previsão do Tempo!\n");

   printf("Digite o nome da cidade: ");
   scanf("%s", cidade);

   obterPrevisaoTempo(cidade);

   return 0;
}

Conclusão

Neste artigo, apresentamos sete projetos em C que são ideais para aprender e praticar a linguagem.

Desde a criação de uma calculadora simples até o desenvolvimento de um aplicativo de previsão do tempo, esses projetos abrangem uma variedade de conceitos e recursos do C.

Você também pode conferir projetos em C++ e também projetos em C# para se inspirar.

Esperamos que você encontre esses exemplos úteis para aprimorar suas habilidades de programação em C.

Perguntas frequentes (FAQs)

Qual é a finalidade do C?

O C é uma linguagem de programação poderosa e versátil. É amplamente utilizada no desenvolvimento de sistemas operacionais, aplicativos de baixo nível, drivers de dispositivos, jogos e muito mais. Sua eficiência e controle próximo do hardware tornam o C uma escolha popular para desenvolvedores que desejam aproveitar ao máximo o desempenho do sistema.

É difícil aprender C?

A dificuldade de aprender C pode variar de pessoa para pessoa, mas, em geral, requer um bom entendimento dos conceitos de programação e uma mentalidade analítica. Como o C é uma linguagem de baixo nível, exige atenção aos detalhes e compreensão dos princípios básicos de programação. Com prática e dedicação, é possível dominar o C e aproveitar seus benefícios.

Onde posso encontrar recursos adicionais para aprender C?

Existem muitos recursos disponíveis para aprender C. Você pode começar consultando tutoriais online, livros especializados e a documentação oficial da linguagem. Além disso, a prática é fundamental para adquirir experiência em programação com C. Tente realizar projetos pessoais e participe de comunidades de desenvolvedores para obter suporte e compartilhar conhecimentos.

É possível criar projetos mais complexos em C?

Sim, o C é uma linguagem poderosa que permite a criação de projetos complexos. Além dos projetos apresentados neste artigo, você pode explorar áreas como programação de sistemas, desenvolvimento de jogos, criação de aplicativos de rede e muito mais. Com o conhecimento adequado e a prática contínua, você pode desenvolver projetos significativos em C.

O que devo fazer depois de concluir esses projetos em C?

Após concluir esses projetos, você pode continuar aprimorando suas habilidades em C explorando outras áreas da linguagem, participando de competições de programação ou até mesmo contribuindo para projetos de código aberto. Além disso, é recomendável continuar aprendendo novas tecnologias e linguagens de programação para expandir suas habilidades como desenvolvedor.

Esperamos que esses projetos o ajudem a aprender e aprimorar suas habilidades em C.

Divirta-se programando e continue explorando os diferentes recursos e possibilidades que essa linguagem oferece.

Boa sorte!

O que você achou desse review?

Média da classificação 5 / 5. Número de votos: 8

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Picture of Equipe Alonza

Equipe Alonza

Somos uma equipe dedicada de especialistas em tecnologia, comprometidos em analisar e acompanhar as últimas tendências e inovações do mundo Tech. Nossa missão é trazer informações precisas e atualizadas para nossos leitores, garantindo que você esteja sempre bem informado sobre as novidades no mundo da tecnologia. Trabalhamos intensamente para criar conteúdos relevantes e confiáveis, além de oferecer recomendações de produtos cuidadosamente selecionados. Queremos que você faça compras informadas e que fique completamente satisfeito com suas escolhas. Fascinados por tecnologia e entender como elas podem auxiliar no dia a dia, tornando diversas tarefas complexas mais simples.

Todos os posts