🚀 Capítulo 03: Variáveis, Tipos de Dados Primitivos e Entrada/Saída em C

🎯 Objetivos da Aula

Ao final desta aula, você será capaz de:

  1. Declarar e inicializar variáveis utilizando os tipos primitivos fundamentais da linguagem C.
  2. Compreender a quantidade de bytes ocupada por cada tipo de dado na memória RAM.
  3. Utilizar corretamente os especificadores de formato do printf e scanf.
  4. Construir programas interativos que lêem dados digitados pelo usuário e realizam cálculos simples.

🧠 1. Tipos de Dados Primitivos em C

Na linguagem C, toda variável deve ter seu tipo explicitamente declarado antes de ser utilizada. O tipo define quanto espaço de memória a variável ocupará e qual faixa de valores ela pode armazenar.

flowchart TD
    Tipos["Tipos de Dados em C"] --> Inteiros["Inteiros (int, short, long)"]
    Tipos --> Reais["Ponto Flutuante (float, double)"]
    Tipos --> Caracteres["Caracteres (char)"]
    
    Inteiros --> I_Ex["int (4 Bytes) -> %d"]
    Reais --> R_Ex["float (4 Bytes) -> %f\ndouble (8 Bytes) -> %lf"]
    Caracteres --> C_Ex["char (1 Byte) -> %c"]

Tabela Resumo dos Tipos Primitivos

Tipo de DadoTamanho TípicoFaixa de Valores (Aproximada)Especificador printf/scanf
char1 Byte (8 bits)-128 a 127 (Tabela ASCII)%c (caractere) / %d (código ASCII)
int4 Bytes (32 bits)-2.147.483.648 a 2.147.483.647%d ou %i
float4 Bytes (32 bits)6 casas decimais de precisão%f
double8 Bytes (64 bits)15 casas decimais de precisão%lf

💻 2. Entrada e Saída Interativa (printf e scanf)

A função printf envia dados formatados para a saída padrão (tela), enquanto o scanf lê dados formatados da entrada padrão (teclado).

#include <stdio.h>
 
int main() {
    // Declaracao e inicializacao de variaveis
    int codigoMatricula = 1001;
    float notaFinal = 8.75f;
    char conceito = 'A';
    
    printf("=========================================\n");
    printf("        REGISTRO DE DESEMPENHO           \n");
    printf("=========================================\n");
    printf("Matricula : %d\n", codigoMatricula);
    printf("Nota      : %.2f\n", notaFinal);
    printf("Conceito  : %c\n", conceito);
    printf("=========================================\n");
    
    return 0;
}

Leitura com scanf e o Operador &:

Para ler valores digitados pelo usuário, passamos o endereço de memória da variável prefixando-a com &:

#include <stdio.h>
 
int main() {
    int idade = 0;
    float altura = 0.0f;
    
    printf("Digite a idade do aluno: ");
    scanf("%d", &idade);
    
    printf("Digite a altura do aluno (em metros, ex: 1.75): ");
    scanf("%f", &altura);
    
    printf("\nDados lidos com sucesso!\n");
    printf("Idade: %d anos | Altura: %.2fm\n", idade, altura);
    
    return 0;
}

⚔️ 3. Desafios Práticos (Exercícios 30/50/20)

🥉 Nível Bronze (Fixação)

  1. Qual especificador de formato deve ser utilizado no printf para exibir uma variável do tipo float com apenas 2 casas decimais?
  2. Por que é necessário utilizar o caractere & antes do nome da variável na função scanf?

🥈 Nível Prata (Aplicação)

  1. Escreva um programa em C que declare duas variáveis do tipo float para armazenar a nota1 e a nota2 de um aluno. O programa deve ler os valores digitados, calcular a média e exibir o resultado formatado.

🥇 Nível Ouro (Desafio)

  1. Escreva um programa que solicite o caractere da inicial do nome do aluno, a sua idade (int) e a mensalidade (double). Imprima uma ficha cadastral formatada exibindo a inicial, a idade, o valor da mensalidade e o tamanho total em bytes ocupado por essas 3 variáveis juntas.

💡 Gabaritos Sanfonados de Resposta

💡 Ver Gabarito do Nível Bronze
  1. Utiliza-se o especificador %.2f.
  2. Porque o scanf necessita do endereço de memória da variável para onde enviará o valor lido do teclado. Sem o &, o programa tenta acessar um valor inválido e sofre um erro de violação de memória (Segmentation Fault).
💡 Ver Gabarito do Nível Prata & Ouro (Código C)
#include <stdio.h>
 
int main() {
    char inicial = 'A';
    int idade = 20;
    double mensalidade = 450.50;
    
    printf("Digite a inicial do nome: ");
    scanf(" %c", &inicial);
    
    printf("Digite a idade: ");
    scanf("%d", &idade);
    
    printf("Digite a mensalidade: ");
    scanf("%lf", &mensalidade);
    
    size_t tamanhoTotal = sizeof(inicial) + sizeof(idade) + sizeof(mensalidade);
    
    printf("\nFICHA DO ALUNO:\n");
    printf("Inicial: %c | Idade: %d | Mensalidade: R$ %.2lf\n", inicial, idade, mensalidade);
    printf("Memoria Total Ocupada: %lu Bytes\n", tamanhoTotal);
    
    return 0;
}

📚 Referências Teóricas Oficiais

  • KERNIGHAN, Brian W.; RITCHIE, Dennis M.. A Linguagem de Programação C. 2ª Edição. Campus, 1989. Cap. 2 (Tipos, Operadores e Expressões).
  • ISO/IEC 9899:2018. C17 Language Specification — Data Types and Formatting.

⬅️ Capítulo Anterior (Fundamentos C) | Voltar ao Sumário | Próximo Capítulo (Operadores) ➡️