🚀 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:
- Declarar e inicializar variáveis utilizando os tipos primitivos fundamentais da linguagem C.
- Compreender a quantidade de bytes ocupada por cada tipo de dado na memória RAM.
- Utilizar corretamente os especificadores de formato do
printfescanf. - 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 Dado | Tamanho Típico | Faixa de Valores (Aproximada) | Especificador printf/scanf |
|---|---|---|---|
char | 1 Byte (8 bits) | -128 a 127 (Tabela ASCII) | %c (caractere) / %d (código ASCII) |
int | 4 Bytes (32 bits) | -2.147.483.648 a 2.147.483.647 | %d ou %i |
float | 4 Bytes (32 bits) | 6 casas decimais de precisão | %f |
double | 8 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)
- Qual especificador de formato deve ser utilizado no
printfpara exibir uma variável do tipofloatcom apenas 2 casas decimais? - Por que é necessário utilizar o caractere
&antes do nome da variável na funçãoscanf?
🥈 Nível Prata (Aplicação)
- Escreva um programa em C que declare duas variáveis do tipo
floatpara armazenar anota1e anota2de um aluno. O programa deve ler os valores digitados, calcular a média e exibir o resultado formatado.
🥇 Nível Ouro (Desafio)
- 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
- Utiliza-se o especificador
%.2f. - Porque o
scanfnecessita 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) ➡️