Guia de Programação em C/GTK 2 - Construindo uma Calculadora Completa

Neste guia, você aprenderá os princípios básicos de GTK, como posicionar os elementos na interface e entender a teoria de sinais. Ao longo do guia, iremos construir uma calculadora completa em C/GTK 2 com botões numéricos, entrada para texto, cálculos com valores flutuantes e negativos, múltiplos operadores e muito mais.

[ Hits: 1.855 ]

Por: Mateus Moutinho em 17/03/2020


Entendendo o Funcionamento do Programa



Nesta página, iremos analisar como será o funcionamento da nossa calculadora, ou seja, o que cada função irá fazer e como será o tratamento de erros, exceções e possíveis quebras de segmentação.

Baixe o o código final do programa calculadorapronta.c.

Compile com o seguinte comando:

gcc calculadorapronta.c -o calculadora.out `pkg-config --cflags --libs gtk+-2.0`

Execute com:

./calculadora.out

E vá testando a calculadora enquanto lê esta página, para entender bem como funcionará a arquitetura do nosso programa.

As Variáveis Globais

Nosso programa terá ao todo 3 variáveis globais, sendo elas:

# double num1;

Como o próprio nome diz, será o primeiro número registrado quando a função "registrar_operador" for acionada.

# double num2;

Será o segundo número registrado quando o botão de igual for pressionado.

# char operador_final;

Será a variável de operação registrada pelo operador e usada pelo botão de igual para determinar o resultado a ser imprimido na tela.

As funções do Programa

1. "quantifica_numeros_totais": essa será a função coringa do nosso programa, será usada por todas as outras para verificar a quantidade de caracteres da entrada da calculadora.

2. "inseri_numero_na_entrada": essa função irá inserir os números de 0 a 9 e a vírgula na entrada. Ela também terá como papel bloquear o limite máximo de 8 caracteres do nosso programa, para isso chamará a função "quantifica_numeros_totais", e através de uma condicional "if", irá retornar a "main" sem fazer nada caso o próximo caractere seja o nono.

3. "registra_operador": como o próprio nome diz, ela terá como papel registrar a variável "char operador_final" com o operador que foi clicado(+-*/), registrar a variável "double num1" com o primeiro número e após isso, limpará a entrada de texto e retornará para a "main" sem fazer nada.

Ela terá ao todo, duas estruturas condicionais "if", sendo elas:
  • A que verifica se o número total de caracteres é igual a zero, através da função "quantifica_numeros_totais" e se o operador for o de subtração, ela chamará a função "insere_numero_na_entrada" passando como argumento o operador. Dessa forma, nossa calculadora também terá a função de executar cálculos com números negativos.
  • E caso o operador não for o de subtração e o número de caracteres for zero, a função irá apenas retornar para a "main" sem fazer nada .

4. "imprimi_resultado_na_entrada": essa função acionada pelo botão igual, terá como papel registrar a variável "double num2" com o número digitado na entrada, executar o cálculo através de um switch entre os operadores e, posteriormente, imprimir o resultado na entrada para o usuário.

Obviamente, como nas 2 funções anteriores, ela também terá uma condicional "if" para caso a quantidade de números totais na entrada seja zero, ela retornará sem fazer nada .

5. "limpa": a função "limpa" será o "resset manual" do nosso programa, ela terá como função limpar a entrada e zerar as 3 variáveis globais, todas as vezes que for acionada pelo usuário através do botão limpa.

Conexões de botões

Abaixo, verá como será feita a conexão dos 4 tipos de botões do nosso programa:

1. Botões numéricos: todos os números de 0 a 9 e a vírgula, serão diretamente conectados a função "insere_numero_na_entrada", passando como argumento um ponteiro para um elemento do vetor "char numeros" que terá todos os números a serem inseridos (o vetor será declarado internamente na função "main")

2. Botões de operadores: todos os botões de operadores (+-*/) serão conectados diretamente à função "registra_operador", e passarão como argumento um elemento do vetor "char operadores", que terá todos os operadores a serem inseridos (o vetor também será declarado internamente na função "main").

3. O botão igual: o botão igual será ligado diretamente na função "imprime_resultado_na_entrada", sem precisar passar nenhum argumento

4. O botão limpa: o botão "limpa" será ligado diretamente na função "limpa", sem precisar passar nenhum argumento .

Observe o diagrama abaixo e terá um melhor entendimento da conexão dos botões:
Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Construindo a Interface - Parte 1: Criando a Janela
   3. Construindo a Interface - Parte 2: Entendendo a estrutura de tabelas
   4. Construindo a Interface - Parte 3: Redigindo o código da interface
   5. Entendendo a Teoria de Sinais GTK
   6. Entendendo o Funcionamento do Programa
   7. Conectando os Botões
   8. Construindo as Funções - Finalizando o Programa
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Análise dos Métodos de Ordenação usados em Algoritmos Computacionais

Linguagem C - Listas Duplamente Encadeadas

Tutorial SDL

Linguagem C - Árvores Binárias

Algoritmo... como fazer?

  
Comentários
[1] Comentário enviado por fabio em 17/03/2020 - 00:10h

Ótimo trabalho, parabéns!

[2] Comentário enviado por mateusmoutinho em 17/03/2020 - 01:29h

opa muito obrigado amigo , logo menos publicarei vários conteúdos sobre programação em C e C++


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts