Sobre esta aula
Até agora estudamos algoritmos de forma geral, praticamos com fluxogramas e conhecemos a sintaxe básica da linguagem C, além de variáveis e tipos de dados. Nesta aula de laboratório você terá o primeiro contato prático com a linguagem: vamos rodar códigos prontos, observar o que acontece e, principalmente, alterar partes desses códigos para entender como cada mudança afeta o resultado.
Você não precisa entender cada detalhe agora. O objetivo é se familiarizar com a estrutura de
um programa em C, ver ele executando de verdade e ganhar confiança antes de estudarmos
printf e scanf em profundidade nas próximas aulas.
Como executar: OnlineGDB
Para rodar os códigos desta aula sem precisar instalar nada no computador, vamos usar o OnlineGDB, um compilador de C online.
- Acesse onlinegdb.com/online_c_compiler.
- Apague o código de exemplo que já vem escrito na tela.
- Copie um dos códigos abaixo e cole no lugar.
- Clique no botão Run (ou pressione o atalho indicado no próprio site) para compilar e executar.
- Observe a saída do programa na área inferior/direita da tela.
Exemplo 1 — Olá, Mundo!
O programa mais clássico de qualquer linguagem: exibir uma mensagem na tela.
#include <stdio.h>
int main() {
printf("Ola, mundo!\n");
printf("Estou aprendendo a programar em C.\n");
return 0;
}
Desafios:
- Troque o texto das mensagens pelo seu nome e curso.
- Adicione uma terceira linha de
printfcom outra frase. - Remova o
\nde dentro de uma das mensagens e rode de novo. O que muda na saída?
Exemplo 2 — Variáveis e tipos
Aqui declaramos variáveis de tipos diferentes e mostramos seus valores na tela.
#include <stdio.h>
int main() {
int idade = 20;
float altura = 1.75;
char inicial = 'W';
printf("Idade: %d anos\n", idade);
printf("Altura: %.2f metros\n", altura);
printf("Inicial do nome: %c\n", inicial);
return 0;
}
Desafios:
- Mude os valores de
idade,alturaeinicialpara os seus dados. - Crie uma nova variável (por exemplo,
int anoNascimento) e exiba ela com um novoprintf. - Troque
%.2fpor%.4fna altura. O que acontece com a quantidade de casas decimais?
Exemplo 3 — Operações aritméticas
Um programa que guarda dois números em variáveis e calcula as quatro operações básicas.
Note que o resultado de cada conta é armazenado em uma variável antes de ser exibido —
só depois usamos o printf para mostrar o que está guardado nela.
#include <stdio.h>
int main() {
int a = 10;
int b = 3;
int soma = a + b;
int subtracao = a - b;
int multiplicacao = a * b;
int divisao = a / b;
printf("a + b = %d\n", soma);
printf("a - b = %d\n", subtracao);
printf("a * b = %d\n", multiplicacao);
printf("a / b = %d\n", divisao);
return 0;
}
Desafios:
- Altere os valores de
aebe observe como os resultados mudam. - Crie uma variável
restoguardando o resto da divisão (operador%, ex.:a % b) e exiba ela também. - Desafio extra: troque
bpara0e rode o programa apenas para a divisão. O que acontece? (não precisa executar se preferir só refletir sobre o resultado).
Exemplo 4 — Lendo um valor digitado (scanf)
Esse programa pede um número para o usuário digitar e depois mostra o valor recebido.
Ainda vamos estudar scanf em detalhe, mas já dá para perceber o padrão: ele guarda
o que você digita dentro de uma variável.
#include <stdio.h>
int main() {
int idade;
printf("Digite sua idade: ");
scanf("%d", &idade);
printf("Voce digitou: %d anos\n", idade);
return 0;
}
Desafios:
- Troque a mensagem "Digite sua idade:" por outra pergunta de sua escolha.
- Adicione uma segunda variável (por exemplo,
peso, do tipofloat, lida com%f) e peça esse valor também. - Exiba a soma das duas idades de dois "usuários" digitados em sequência.
Exemplo 5 — Comparando dois números (if/else)
Um primeiro contato com decisão em C: o programa compara dois números e diz qual é o maior.
#include <stdio.h>
int main() {
int a = 7;
int b = 12;
if (a > b) {
printf("%d e maior que %d\n", a, b);
} else {
printf("%d e maior ou igual a %d\n", b, a);
}
return 0;
}
Desafios:
- Troque os valores de
aebaté conseguir que a segunda mensagem apareça. - Adicione um terceiro caso usando
else ifpara tratar quando os dois valores são iguais. - Inverta a comparação (troque
>por<) e veja como a lógica do programa muda.
Exemplo 6 — Par ou ímpar?
Um programa que verifica se um número é par ou ímpar e exibe o resultado.
#include <stdio.h>
int main() {
int numero = 8;
int resto = numero % 2;
if (resto == 0) {
printf("%d e par\n", numero);
} else {
printf("%d e impar\n", numero);
}
return 0;
}
Desafios:
- Troque o valor de
numeropor outros valores (positivos, negativos, o zero) e confira se o resultado faz sentido. - Adapte o Exemplo 4 para pedir o número com
scanfem vez de deixá-lo fixo no código.
Pense e responda:
- Qual foi a lógica usada no código para decidir se o número é par ou ímpar?
- Por que calcular o resto da divisão por 2 (
numero % 2) resolve esse problema? O que esse resto representa? - Existe alguma outra forma de descobrir se um número é par ou ímpar, sem usar o operador
%? Como seria essa lógica?
Exemplo extra — Imprimindo de 1 a 1000
Já sabemos imprimir valores na tela com printf. Para exibir os números de 1 a 10,
daria para escrever dez linhas de printf, uma para cada número — trabalhoso, mas
possível. Agora pense: e se precisássemos exibir os números de 1 a 1000? Escrever mil
linhas de printf não é uma opção razoável.
É exatamente para isso que existem as estruturas de repetição (ou laços): elas
permitem repetir um mesmo bloco de código várias vezes, mudando apenas o valor de uma variável
a cada repetição. O exemplo abaixo usa um laço for para imprimir os números de 1
a 1000 com apenas um printf.
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 1000; i++) {
printf("%d\n", i);
}
return 0;
}
Desafios:
- Altere o código para imprimir os números de 1 a 10 e confira se dá para conferir manualmente que está correto.
- Altere o intervalo para imprimir de 500 a 1000.
- Altere o código para imprimir apenas os números pares de 1 a 1000 (dica: use o que aprendeu no Exemplo 6).
- Altere o código para imprimir de 1000 até 1, na ordem decrescente.
Para refletir
Depois de testar os exemplos e seus desafios, pense: em qual momento o programa mostra
algo na tela? Em qual momento ele espera algo do usuário? Essas duas ideias — saída e
entrada — vão ser aprofundadas na próxima aula com printf e scanf.
Guarde também a ideia de repetição do último exemplo: ela vai voltar quando estudarmos
laços com mais calma.