ALP em C: do zero ate as atividades

Programacao em C explicada sem pressa

Este site junta as atividades dos PDFs de ALP e transforma tudo em explicacao simples, exemplos pequenos, perguntas de multipla escolha e um verificador para treinar escrita de codigo.

scanf para numeros fgets para textos if / else switch case while / for vetores e matrizes funcoes

Regra de ouro

Programa em C e uma receita. Voce declara as variaveis, le os dados, faz contas/decisoes/repeticoes e mostra o resultado.

#include <stdio.h>

int main() {
    int idade;

    printf("Digite sua idade: ");
    scanf("%d", &idade);

    if (idade >= 18) {
        printf("Adulto");
    } else {
        printf("Menor de idade");
    }

    return 0;
}

Basico que voce precisa decorar primeiro

Numero inteiro

Use int para idade, opcao de menu, quantidade, contador e posicao.

int idade;
scanf("%d", &idade);

Numero com virgula

Use float para nota, media, salario, temperatura, distancia e cotacao.

float nota;
scanf("%f", ¬a);

Texto

Use char nome[50] e leia com fgets. Texto precisa de tamanho.

char nome[50];
fgets(nome, 50, stdin);

Quando usar cada coisa

if e else

Use quando o programa precisa escolher entre caminhos.

Exemplos dos PDFs: aprovado/reprovado, positivo/negativo/zero, multiplo de 5, idade.

switch case

Use quando existe um menu com opcoes fixas, tipo 1, 2 ou 3.

Exemplo do PDF: converter metros para centimetros, milimetros ou quilometros.

while

Use quando voce nao sabe exatamente quantas vezes vai repetir, ou quando depende de uma condicao.

Exemplos: ler ate digitar 0, somar de 1 ate N.

for

Use quando voce sabe a quantidade de repeticoes: 10 vezes, 20 alunos, vetor de 25 posicoes.

Exemplos: tabuada 1 a 10, percorrer vetor, ler 20 alunos.

Vetores

Use quando precisa guardar varios valores do mesmo tipo em uma lista.

Exemplos: 25 numeros, 10 numeros, gabarito com 20 respostas.

Matrizes e strings

Matriz e tabela. String e texto guardado em vetor de caracteres.

Exemplos: apostas da Quina, 5x5 acidentes, nomes de alunos, frase com vogais trocadas.

Funcoes

Use funcao para separar uma tarefa e reaproveitar codigo. Pense: "vou criar uma mini-maquina que recebe dados e devolve resposta".

float media(float a, float b) {
    return (a + b) / 2;
}

Fluxograma bem simples

Fluxograma e o desenho da logica antes de escrever em C. Pense assim: cada caixa e uma acao, cada pergunta divide o caminho.

Legenda das formas

Oval: inicio ou fim. Retangulo: processamento, conta ou atribuicao. Paralelogramo: entrada ou saida de dados, como scanf, fgets e printf. Losango: pergunta/decisao, como media >= 7?.

Modelo basico de qualquer programa

Serve para quase todos os exercicios da Atividade II.

Inicio
v
Declarar variaveis
v
Ler dados com scanf ou fgets
v
Fazer calculo ou decisao
v
Mostrar resultado com printf
v
Fim

Fluxograma de if/else

Use para aprovado/reprovado, positivo/negativo, maior/menor e idade.

Inicio
v
Ler nota
v
Media >= 7?
sim -> Aprovado | nao -> Reprovado
Mostrar mensagem
v
Fim

Fluxograma de switch case

Use quando o usuario escolhe uma opcao de menu.

Inicio
v
Ler metros
v
Ler opcao 1, 2 ou 3
v
Qual opcao?
1 -> cm | 2 -> mm | 3 -> km | outro -> invalida
Mostrar resultado
v
Fim

Fluxograma de while

Use quando repete enquanto uma condicao for verdadeira.

Inicio
v
i = 1 e soma = 0
v
i <= n?
sim -> soma = soma + i; i++
Volta para a pergunta
nao
Mostrar soma
v
Fim

Fluxograma de for com vetor

Use quando voce sabe quantas posicoes vai percorrer.

Inicio
v
Criar vetor n[5]
v
i = 0
v
i < 5?
sim -> ler n[i]; i++
Volta para a pergunta
nao
Mostrar vetor
v
Fim

Fluxograma de texto com fgets

Use para nome, frase e qualquer texto com espaco.

Inicio
v
Criar char frase[100]
v
Ler frase com fgets
v
Percorrer letras se precisar
v
Mostrar texto final
v
Fim

Relacao direta com os PDFs

Atividade II - Entrada, saida e decisao: treina scanf, contas simples, if/else e switch case. Aqui entram temperatura, combustivel, cotacao, comissao, media, idade e menu.
Atividade III - Repeticao: treina while e for. Aqui entram soma de intervalo, pares, potencia, media de varios valores, divisores, primo, sentinela e tabuada.
Atividade 4 - Vetores, matrizes e strings: treina listas, tabelas e textos. Aqui entram menor elemento, multiplicacao de vetores, Quina, quadrado magico, acidentes, frase com vogais e gabarito.

Pergunta e resposta

O que eu faco primeiro em um exercicio?

Primeiro descubra quais dados entram. Exemplo: se o exercicio pede media, entram duas notas. Depois descubra o que sai: aprovado/reprovado ou a media na tela.

Como sei se uso scanf ou fgets?

Se for numero, use scanf. Se for texto, nome ou frase, use fgets. Exemplo: idade usa scanf("%d", &idade); nome usa fgets(nome, 50, stdin).

Quando eu uso if?

Use if quando existir uma pergunta com resposta sim ou nao. Exemplo: "a media e maior ou igual a 7?". Se sim, aprovado. Se nao, reprovado.

Quando eu uso switch case?

Use em menus. Se o usuario digita 1, faz uma coisa; se digita 2, faz outra; se digita 3, faz outra. Se digitar qualquer outra opcao, cai no default.

Qual a diferenca entre while e for?

for e melhor quando voce sabe a quantidade de repeticoes. while e melhor quando voce repete ate uma condicao mudar, como "ate digitar 0".

Por que vetor comeca no indice 0?

Em C, o primeiro item de um vetor fica na posicao 0. Entao um vetor de 5 posicoes usa os indices 0, 1, 2, 3 e 4.

Por que aparece & no scanf?

Porque o scanf precisa saber onde guardar o valor digitado. Em numeros, normalmente fica assim: scanf("%d", &idade);.

Para que serve uma funcao?

Funcao serve para separar uma tarefa. Exemplo: uma funcao calcularMedia recebe duas notas e devolve a media. Assim o main fica mais organizado.

Perguntas de multipla escolha

Escolha a melhor resposta. O site corrige na hora e explica o motivo.

Digite seu codigo

Este mini compilador nao compila de verdade. Ele verifica se a escrita esta parecida com C e se voce usou a entrada certa: scanf para numero e fgets para texto.

Numero + if/else

Leia uma nota com scanf, calcule/compare e mostre aprovado ou reprovado.

Digite ou carregue um exemplo e clique em verificar.