[Piquete] Introdução ao C

  Caderno de TI

Introdução ao C

Do básico à preparação para o Arduino · Ensino Médio Técnico em Desenvolvimento de Sistemas

Técnico em DS ~100 min · 2 aulas C / Arduino 12 seções

Introdução ao C

01

O que é C?

C é uma linguagem de programação de propósito geral criada por Dennis Ritchie entre 1972 e 1973, nos Laboratórios Bell (Bell Labs), originalmente para desenvolver o sistema operacional UNIX. É compilada — o código que você escreve é traduzido para a linguagem da máquina antes de executar, o que a torna extremamente rápida e eficiente.

Curiosidade: O nome "C" veio por ser a sucessora de uma linguagem chamada "B" (criada por Ken Thompson). Além disso, C é considerada a "mãe" de muitas linguagens modernas — C++, Java, C#, JavaScript e PHP herdaram grande parte de sua sintaxe!

Linguagem Compilada vs Interpretada

Para entender C, é fundamental saber que existem dois grandes modelos de execução de linguagens de programação: compiladas e interpretadas. Cada uma tem características próprias que definem onde e como são usadas.

Linguagem Compilada

  • O código-fonte é traduzido inteiramente para código de máquina antes da execução
  • O processo de tradução é feito por um programa chamado compilador
  • Gera um arquivo executável independente (.exe, binário)
  • Execução muito mais rápida — a tradução já foi feita
  • Erros de sintaxe são detectados antes de rodar o programa
C C++ Rust Go Pascal

Linguagem Interpretada

  • O código-fonte é traduzido e executado linha por linha em tempo real
  • A tradução é feita por um programa chamado interpretador
  • Não gera executável — precisa do interpretador instalado
  • Execução mais lenta — traduz enquanto executa
  • Facilita testes rápidos e desenvolvimento ágil
Python JavaScript PHP Ruby VisuAlg

Analogia: A linguagem compilada é como traduzir um livro inteiro para o português antes de publicá-lo — a leitura depois é fluida e rápida. A interpretada é como ter um tradutor simultâneo ao lado: funciona, mas há uma pequena demora em cada frase.

O processo de compilação em C
┌─────────────────────────────────────────────────────────────────┐
│                      FLUXO DE COMPILAÇÃO C                       │
└─────────────────────────────────────────────────────────────────┘

  programa.c            ← você escreve aqui (código-fonte)
       │
       ▼
  Compilador (gcc)      ← verifica erros e traduz tudo
       │
       ▼
  programa.exe          ← arquivo executável gerado
       │
       ▼
  Execução rápida       ← CPU roda diretamente, sem tradutor

  No Arduino: o IDE compila o sketch e grava o binário no chip!

Onde C é utilizado?

ÁreaExemplos do mundo real
🖥️ Sistemas operacionaisKernel do Linux, partes do Windows e do macOS
🚗 Sistemas embarcadosAutomóveis, eletrodomésticos, robótica, IoT
🗄️ Bancos de dadosMySQL, PostgreSQL, SQLite, Redis
🧩 Linguagens e interpretadoresPython (CPython), PHP e Ruby são escritos em C
🔌 Drivers de dispositivosComunicação direta com o hardware
🤖 Arduino / EletrônicaMicrocontroladores, sensores, automação

Relação entre C e Arduino

Quando você programa um Arduino, está usando uma linguagem baseada em C (e C++)! A estrutura, os tipos de dados, as estruturas de controle e as funções que você aprender aqui serão aplicados diretamente em projetos com LEDs, sensores, motores e muito mais.

Conexão direta: Estruturas como if, for, while, funções e variáveis que você aprenderá aqui são exatamente as mesmas usadas no Arduino IDE!

Exercício de Fixação
  1. Cite 3 exemplos de produtos ou sistemas do cotidiano que provavelmente usam C no seu funcionamento.
  2. Por que uma linguagem compilada tende a ser mais rápida do que uma interpretada?
  3. O que você espera aprender em C que poderá aplicar em um projeto com Arduino?

Documentação Oficial e Ambientes Online

🔗

Antes de começar a programar, conheça os principais recursos online para consultar a linguagem e testar seus códigos sem precisar instalar nada no computador.

📚 Documentação e Referência

⚡ Sandboxes — Teste seu código online

Estes ambientes permitem escrever, compilar e executar código C direto no navegador, sem instalar nada. Perfeito para testar os exemplos desta aula!

Dica para a aula: Use o OnlineGDB para testar os exemplos desta apostila em tempo real. Basta copiar o código, colar no editor e clicar em Run. Sem instalação, sem configuração!

No futuro: Para projetos maiores e para programar o Arduino, você utilizará o VS Code com a extensão C/C++ ou o Arduino IDE — ambos gratuitos e instalados no laboratório.

Estrutura Básica de um Programa

02

Todo programa em C segue uma estrutura básica. Veja o clássico "Olá, Mundo!":

hello_mundo.c
#include <stdio.h>   // Inclui a biblioteca padrão de entrada e saída

int main() {              // Função principal — todo programa começa aqui

    printf("Olá, Mundo!\n");   // Exibe texto na tela (\n = quebra de linha)

    return 0;             // Indica que o programa terminou com sucesso
}

#include <stdio.h>

O #include é uma diretiva de pré-processamento. Ela diz ao compilador: "inclua o conteúdo desta biblioteca antes de compilar". A biblioteca <stdio.h> (standard input/output) fornece as funções de entrada (scanf) e saída (printf) de dados.

int main()

Esta é a função principal do programa. Todo programa em C precisa de uma main() — é a partir dela que a execução começa. O int antes indica que ela retorna um número inteiro ao sistema operacional.

printf e \n

A função printf ("print formatted") é responsável por exibir informações na tela. O texto a ser exibido vai entre aspas duplas. A sequência \n representa uma quebra de linha (equivalente a pressionar Enter).

return 0

Ao final da main(), o return 0 informa ao sistema que o programa terminou corretamente. Um valor diferente de 0 indicaria que houve algum erro.

Exemplo com múltiplas saídas
#include <stdio.h>

int main() {
    printf("Bem-vindo à aula de C!\n");
    printf("Hoje vamos aprender o básico.\n");
    printf("Vamos lá!\n");
    return 0;
}
Exercício de Fixação
  1. Escreva um programa que exiba seu nome, cidade e turma na tela, cada um em uma linha diferente.
  2. O que aconteceria se removêssemos o #include <stdio.h>? Por quê?
  3. Qual a diferença entre printf("Olá") e printf("Olá\n")?

Variáveis e Tipos de Dados

03

Variáveis são espaços na memória onde guardamos informações temporariamente durante a execução do programa. Em C, toda variável precisa ter um tipo definido.

Tipos Primitivos

TipoDescriçãoExemplo de valorEspecificador
intNúmeros inteiros-5, 0, 42, 1000%d
floatDecimais (precisão simples)3.14, -0.5%f
doubleDecimais (dupla precisão)3.14159265358%lf
charUm único caractere'A', 'z', '5'%c
boolVerdadeiro ou falso (requer <stdbool.h>)true, false%d
char[ ]Texto — vetor de caracteres"Olá, mundo!"%s

Diferença importante para o C++: Em C não existe o tipo string. Para armazenar textos, usamos um vetor de caracteres (char nome[ ]). Cada letra ocupa uma posição, e o texto termina com um caractere especial invisível '\0'.

variaveis.c
#include <stdio.h>
#include <stdbool.h>   // Necessário para usar bool, true e false

int main() {
    // Declaração e atribuição de variáveis
    int    idade    = 17;              // Número inteiro
    float  altura   = 1.75;           // Decimal com menos precisão
    double saldo    = 1523.99;        // Decimal com mais precisão
    char   inicial  = 'A';            // Um único caractere — aspas simples!
    bool   aprovado = true;           // Verdadeiro ou falso
    char   nome[]   = "Maria Silva";  // Texto — vetor de char, aspas duplas!

    // Exibindo os valores — cada tipo usa seu especificador
    printf("Nome: %s\n", nome);
    printf("Idade: %d\n", idade);
    printf("Altura: %.2f m\n", altura);
    printf("Saldo: R$ %.2lf\n", saldo);
    printf("Inicial: %c\n", inicial);
    printf("Aprovado: %d\n", aprovado);   // Exibe 1 (true) ou 0 (false)

    return 0;
}

Atenção! char usa aspas simples 'A' e o texto (vetor de char) usa aspas duplas "texto". Trocar um pelo outro causa erro de compilação! Cada tipo também tem seu especificador de formato no printf (%d, %f, %c, %s).

Constantes com const

Quando um valor não deve mudar durante o programa, use a palavra-chave const:

constantes.c
const double PI         = 3.14159265;  // PI nunca mudará
const int    MAX_ALUNOS  = 40;           // Capacidade máxima da sala

// PI = 3.14;   ← ERRO! Não se pode alterar uma constante

Dica: Em C também é muito comum definir constantes com a diretiva #define, por exemplo: #define PI 3.14159 (sem ponto e vírgula no final).

Exercício de Fixação
  1. Declare variáveis para armazenar: nome do produto, preço, quantidade em estoque e se está disponível. Use os tipos corretos para cada uma.
  2. Qual a diferença prática entre float e double? Quando usar cada um?
  3. Por que usamos const? Dê um exemplo prático de uso em um sistema escolar.
  4. Qual especificador de formato do printf usamos para exibir um int? E um char? E um texto?

Entrada e Saída de Dados

04

Um programa útil precisa receber dados do usuário e mostrar resultados. Em C, usamos scanf para entrada e printf para saída.

printf — Saída de dados

Variações do printf
printf("Texto simples\n");              // Texto + quebra de linha
printf("Nota: %.1f\n", nota);           // Texto concatenado com variável
printf("A + B = %d\n", a + b);       // Texto + expressão calculada
printf("%d anos e nota %.1f\n", idade, nota);  // Vários valores de uma vez

scanf — Entrada de dados

cadastro.c
#include <stdio.h>

int main() {
    char  nome[50];
    int   idade;
    float nota;

    printf("Digite seu nome: ");
    fgets(nome, 50, stdin);   // Lê a linha inteira (incluindo espaços)

    printf("Digite sua idade: ");
    scanf("%d", &idade);       // O & indica o ENDEREÇO da variável

    printf("Digite sua nota: ");
    scanf("%f", &nota);

    printf("\n--- Dados cadastrados ---\n");
    printf("Nome: %s", nome);       // fgets já inclui o \n do nome
    printf("Idade: %d\n", idade);
    printf("Nota: %.1f\n", nota);

    return 0;
}

Atenção ao & no scanf! Ao ler int, float e char com scanf, é obrigatório colocar & antes da variável (ex.: scanf("%d", &idade)). O & indica o endereço onde o valor será guardado. Esquecer o & é um dos erros mais comuns em C!

scanf vs fgets: Use scanf("%s", nome) para ler uma palavra (sem espaços). Use fgets(nome, tam, stdin) para ler frases completas com espaços. Observe que com %s no scanf o texto não leva &, pois o nome do vetor já representa um endereço.

Exercício de Fixação
  1. Crie um programa que pergunte o nome e a idade e exiba: "Olá, [nome]! Você tem [idade] anos."
  2. Leia dois números e exiba a soma, a diferença e o produto entre eles.
  3. Por que precisamos do & ao ler um int com scanf, mas não ao ler um texto com %s?

Operadores

05

Operadores Aritméticos

OperadorSignificadoExemploResultado
+Adição10 + 313
-Subtração10 - 37
*Multiplicação10 * 330
/Divisão10 / 33 (inteiro!)
%Módulo (resto)10 % 31
++Incrementox++x = x + 1
--Decrementox--x = x - 1

Atenção: Divisão entre dois inteiros resulta em inteiro! 7 / 2 = 3, não 3.5. Para resultado decimal, pelo menos um número deve ser float: 7.0 / 2 = 3.5.

Operadores Relacionais

OperadorSignificadoExemploResultado
==Igual a5 == 51 (verdadeiro)
!=Diferente de5 != 31 (verdadeiro)
>Maior que7 > 31 (verdadeiro)
<Menor que3 < 71 (verdadeiro)
>=Maior ou igual7 >= 71 (verdadeiro)
<=Menor ou igual3 <= 51 (verdadeiro)

Verdadeiro e falso em C: Diferente de outras linguagens, em C o resultado de uma comparação é um número inteiro: 1 para verdadeiro e 0 para falso. Qualquer valor diferente de zero é considerado verdadeiro.

Operadores Lógicos

OperadorSignificadoExemploResultado
&&E (AND) — ambos verdadeiros1 && 00 (falso)
||OU (OR) — ao menos um verdadeiro1 || 01 (verdadeiro)
!NÃO (NOT) — inverte!10 (falso)
operadores.c
#include <stdio.h>

int main() {
    int a = 10, b = 3;

    // Aritméticos
    printf("Soma:    %d\n", a + b);   // 13
    printf("Divisão: %d\n", a / b);   // 3  (inteiro!)
    printf("Resto:   %d\n", a % b);   // 1

    // Relacionais
    printf("a > b?  %d\n", a > b);   // 1 (verdadeiro)
    printf("a == b? %d\n", a == b);  // 0 (falso)

    // Lógicos
    int ok = (a > 5) && (b < 10);   // verdadeiro E verdadeiro = 1
    printf("Condição: %d\n", ok);       // 1

    return 0;
}
Exercício de Fixação
  1. Calcule mentalmente: 17 % 5 e 20 % 4. Para que serve o módulo no dia a dia da programação?
  2. Escreva uma expressão lógica que verifique se uma nota está entre 5 e 8 (inclusive).
  3. Crie um programa que leia dois números e mostre qual é o maior, qual é o menor e o resto da divisão do maior pelo menor.

Estruturas Condicionais

06

Estruturas condicionais permitem que o programa tome decisões com base em condições. São a base da lógica de qualquer software.

notas.c — Verificação de aprovação
#include <stdio.h>

int main() {
    float nota;
    printf("Digite sua nota (0 a 10): ");
    scanf("%f", &nota);

    if (nota >= 7.0) {           // Se nota >= 7: aprovado
        printf("APROVADO!\n");
    } else if (nota >= 5.0) {   // Senão, se >= 5: recuperação
        printf("RECUPERAÇÃO\n");
    } else {                     // Caso nenhuma condição seja verdade
        printf("REPROVADO\n");
    }

    return 0;
}

Lembre-se: == (dois iguais) compara valores. = (um igual) atribui um valor. Confundir os dois é um dos erros mais comuns em C!

temperatura.c — Exemplo com sensor (conexão Arduino!)
#include <stdio.h>

int main() {
    float temp;
    printf("Temperatura atual (°C): ");
    scanf("%f", &temp);

    if (temp < 0) {
        printf("Abaixo de zero! Risco de gelo.\n");
    } else if (temp < 15) {
        printf("Frio — Vista um casaco.\n");
    } else if (temp < 25) {
        printf("Temperatura agradável.\n");
    } else {
        printf("Calor! Hidrate-se.\n");
    }

    return 0;
}
// No Arduino: ideal para leitura de sensores de temperatura como o LM35 ou DHT11!
Exercício de Fixação
  1. Crie um programa que leia um número inteiro e diga se ele é par ou ímpar. (Dica: use o operador %)
  2. Leia 3 notas, calcule a média e classifique: Aprovado (≥7), Recuperação (5 a 6,9) ou Reprovado (<5).
  3. Crie um programa que leia a idade de uma pessoa e informe a faixa: criança (0–11), adolescente (12–17), adulto (18–59) ou idoso (60+).

Estruturas de Repetição

07

Laços permitem executar um bloco de código várias vezes sem precisar reescrevê-lo — são indispensáveis em qualquer programa real.

Laço for — quando sabemos quantas vezes repetir

tabuada.c
#include <stdio.h>

int main() {
    int numero;
    printf("Tabuada de qual número? ");
    scanf("%d", &numero);

    // for (início; condição de parada; passo)
    for (int i = 1; i <= 10; i++) {
        printf("%d x %d = %d\n", numero, i, numero * i);
    }

    return 0;
}

Laço while — quando repetimos enquanto uma condição for verdadeira

senha.c — Controle de tentativas
#include <stdio.h>

int main() {
    const int SENHA     = 1234;  // Senha correta
    int       tentativa;
    int       tentativas = 0;

    printf("Digite a senha: ");
    scanf("%d", &tentativa);

    // Repete enquanto errar e não atingir 3 tentativas
    while (tentativa != SENHA && tentativas < 3) {
        tentativas++;
        printf("Senha incorreta! Tentativa %d/3\n", tentativas);
        printf("Tente novamente: ");
        scanf("%d", &tentativa);
    }

    if (tentativa == SENHA) {
        printf("Acesso liberado!\n");
    } else {
        printf("Conta bloqueada!\n");
    }

    return 0;
}
// No Arduino: while é usado para aguardar um sensor atingir certo valor!

Cuidado com loops infinitos! Se a condição do while nunca se tornar falsa, o programa trava. Certifique-se de que a variável de controle é atualizada dentro do laço.

Exercício de Fixação
  1. Use um for para exibir todos os números pares de 2 a 20.
  2. Use um while para acumular números digitados pelo usuário. O programa para quando o usuário digitar 0, então exibe a soma total.
  3. Com for, calcule o fatorial de um número digitado (ex: 5! = 5×4×3×2×1 = 120).
  4. Qual a diferença principal entre for e while? Dê um exemplo de situação ideal para cada um.

Funções

08

Funções são blocos de código reutilizáveis que executam uma tarefa específica. Elas organizam o programa, evitam repetição e facilitam a manutenção.

Princípio DRY: "Don't Repeat Yourself" — se você escreve o mesmo código em dois lugares, provavelmente deveria criar uma função!

Anatomia de uma função

Estrutura geral
// tipo_retorno  nome_da_funcao(tipo param1, tipo param2, ...)
int somar(int a, int b) {
    return a + b;   // Retorna um int para quem chamou a função
}

// void = sem retorno   |   int, float, char... = com retorno
funcoes.c — Exemplos completos
#include <stdio.h>

// Função sem retorno e sem parâmetros
void saudacao() {
    printf("Olá! Bem-vindo ao sistema.\n");
}

// Função sem retorno, com parâmetro (texto = vetor de char)
void saudar(char nome[]) {
    printf("Olá, %s!\n", nome);
}

// Função com retorno — calcula e devolve o resultado
float calcularMedia(float n1, float n2, float n3) {
    return (n1 + n2 + n3) / 3.0;
}

int main() {
    saudacao();              // Chamada sem argumento
    saudar("Ana");           // Passando um argumento
    saudar("Carlos");

    float media = calcularMedia(8.0, 6.5, 9.0);  // Recebe o retorno
    printf("Média: %.2f\n", media);   // 7.83

    return 0;
}

Dica: Em C, cada função deve ser definida (ou declarada com um protótipo) antes de ser usada. Por isso, escrevemos as funções auxiliares acima da main().

Exercício de Fixação
  1. Crie uma função maximo(int a, int b) que receba dois inteiros e retorne o maior deles.
  2. Crie uma função ehPar(int n) que retorne 1 se o número for par e 0 se for ímpar.
  3. Crie uma função exibirLinha(char c, int qtd) que exiba o caractere c repetido qtd vezes. Ex: exibirLinha('-', 10) exibe ----------.

Vetores (Arrays)

09

Um vetor é uma variável que armazena vários valores do mesmo tipo em sequência. Em vez de criar 10 variáveis separadas para 10 notas, use um único vetor!

Declaração e acesso

arrays.c
#include <stdio.h>

int main() {
    // Declaração: tipo nome[tamanho]
    float notas[5];                         // 5 posições (índices 0 a 4)

    // Declaração já com valores iniciais
    int idades[4] = {17, 16, 18, 15};

    // Acesso por índice — começa em 0!
    printf("Primeira idade: %d\n", idades[0]);  // 17
    printf("Última idade:   %d\n", idades[3]);  // 15

    idades[1] = 19;  // Modifica o segundo elemento

    return 0;
}

Atenção! Índices começam em 0. Um vetor de tamanho 5 tem índices de 0 a 4. Acessar o índice 5 é um erro grave — acesso à memória indevida!

Percorrendo vetores com for

media_turma.c
#include <stdio.h>

// Tamanho definido como constante
#define TAM 5

int main() {
    float notas[TAM];
    float soma = 0;

    // Leitura das notas com laço
    for (int i = 0; i < TAM; i++) {
        printf("Nota do aluno %d: ", i + 1);
        scanf("%f", &notas[i]);
        soma += notas[i];   // Acumula a soma
    }

    printf("\n--- Resultado ---\n");

    // Exibe todas as notas
    for (int i = 0; i < TAM; i++) {
        printf("Aluno %d: %.1f\n", i + 1, notas[i]);
    }

    printf("Media da turma: %.2f\n", soma / TAM);
    return 0;
}
// No Arduino: vetores guardam múltiplas leituras de sensores ao longo do tempo!
Exercício de Fixação
  1. Crie um vetor com 7 temperaturas e calcule a temperatura média da semana.
  2. Dado um vetor de 10 números, encontre e exiba o maior e o menor valor.
  3. Leia 5 nomes e os exiba em ordem inversa (do último para o primeiro).

Boas Práticas de Programação

10

Programar bem não é só fazer o código funcionar — é fazer código que outras pessoas (e você no futuro) consigam entender e modificar.

Indentação

Indentação são os recuos (espaços/tabs) que delimitam blocos de código. Código mal indentado é difícil de ler e dar manutenção.

❌ Sem indentação — difícil de ler
for(int i=0;i<5;i++){if(i%2==0){printf("%d\n",i);}}
✅ Com indentação — fácil de ler
for (int i = 0; i < 5; i++) {
    if (i % 2 == 0) {
        printf("%d\n", i);
    }
}

Comentários

Tipos de comentários
// Comentário de linha única — explica o que está na frente
int contador = 0;  // Começa em zero

/*
 * Comentário de múltiplas linhas
 * Ideal para documentar funções ou blocos complexos
 */
float calcularMedia(float n1, float n2, float n3) {
    return (n1 + n2 + n3) / 3.0;
}

Nomes de Variáveis

❌ Evite✅ PrefiraMotivo
int xint idade_alunoNome claro e descritivo
float nfloat nota_finalAutoexplicativo
char s1[]char nome_produto[]Contexto claro
int a, b, cint largura, altura, areaSem ambiguidade

Convenção snake_case: Em C, é tradicional usar snake_case para variáveis e funções — palavras em minúsculas separadas por sublinhado: media_final, calcular_area(), total_de_alunos. O estilo camelCase (mediaFinal) também é aceito; o importante é manter um padrão único no projeto inteiro.

Exercício de Fixação
  1. Reescreva aplicando boas práticas: int a=10;int b=20;int c=a+b;printf("%d",c);
  2. Liste 5 nomes de variáveis ruins e reescreva-as de forma mais descritiva.
  3. Por que boas práticas são especialmente importantes em projetos desenvolvidos em equipe?

Exercícios Práticos

11

Coloque em prática tudo o que aprendeu. Estes exercícios combinam múltiplos conceitos em um único programa.

Exercícios Completos
  1. Calculadora simples: Leia dois números e uma operação (+, -, *, /) e exiba o resultado. Use if/else if para tratar cada operação. Trate divisão por zero!
  2. Fibonacci: Exiba os 10 primeiros números da sequência de Fibonacci usando for e um vetor.
  3. Cadastro de turma: Armazene nomes e notas de 5 alunos em vetores. Exiba uma tabela e indique quem está aprovado (nota ≥ 7).
  4. IMC: Crie uma função calcularIMC(float peso, float altura) que retorne o IMC e outra classificarIMC(float imc) que exiba a classificação (abaixo do peso, normal, sobrepeso, obeso).
  5. Palíndromo: Leia uma palavra e verifique se é um palíndromo (igual de trás para frente). Ex: "arara", "racecar".

Pequenos Desafios

12

Para quem quer ir além! Estes desafios são mais elaborados e envolvem criatividade e raciocínio lógico avançado.

Desafios Avançados
  1. 🎲 Jogo de adivinhação: O computador sorteia um número entre 1 e 100 (rand() % 100 + 1, com <stdlib.h>). O usuário tenta adivinhar; o programa diz "maior" ou "menor". Conte as tentativas.
  2. 📊 Ordenação manual: Leia 5 números, ordene do menor para o maior sem usar funções de biblioteca (use dois for aninhados — Bubble Sort).
  3. 🔢 Números primos: Crie uma função que retorne 1 se um número for primo. Use-a para listar todos os primos até 100.
  4. 💰 Caixa eletrônico: O usuário informa um valor a sacar. O programa informa o menor número de notas de R$100, R$50, R$20, R$10 e R$5 necessárias.
  5. 🏦 Mini banco: Crie um menu com while + if que permita: depositar, sacar, ver saldo e sair. Controle o saldo com double.

Preparação para Arduino

Como tudo o que você aprendeu será aplicado em projetos eletrônicos reais

if / else

Verificar leituras de sensores: "Se o sensor ultrapassar 40°C, acione o ventilador."

for / while

O loop() do Arduino funciona como um while(true) infinito, executando continuamente seu código.

Funções

No Arduino, setup() e loop() são funções. Você criará as suas para controlar LEDs, motores e displays.

Variáveis e tipos

Os mesmos tipos (int, float, char) armazenam leituras de sensores e controlam estados de componentes.

Vetores

Armazenam múltiplas leituras de sensores ao longo do tempo ou mapeiam sequências de LEDs.

Boas práticas

Comentários e nomes claros são essenciais em projetos embarcados, onde o código controla hardware real.

Exemplo real em Arduino — LED com sensor analógico
// Veja como os conceitos desta aula aparecem no Arduino IDE!

const int LED    = 13;   // const: pino do LED
const int SENSOR = A0;   // const: pino do sensor analógico
int leituras[10];         // Vetor para 10 leituras (arrays!)

void setup() {            // Função de inicialização — roda 1 vez
    pinMode(LED, OUTPUT);
    Serial.begin(9600);
}

void loop() {             // Função principal — while(true) infinito!
    int valor = analogRead(SENSOR);   // Lê o sensor (variável!)

    if (valor > 500) {      // Estrutura condicional!
        digitalWrite(LED, HIGH);   // Liga o LED
    } else {
        digitalWrite(LED, LOW);    // Desliga o LED
    }

    delay(100);             // Aguarda 100 ms
}

Observação: O Arduino combina recursos de C e C++. Comandos como Serial.begin() usam a parte de C++, mas toda a base que você aprendeu neste material em C (tipos, operadores, if, for, while e funções) é o alicerce da programação de qualquer placa.

Você está pronto! Com os conceitos desta aula, você já tem a base para programar o Arduino. Na próxima aula, instalaremos o Arduino IDE e criaremos seu primeiro projeto eletrônico!

✍️ Material produzido para o Ensino Médio Técnico em Desenvolvimento de Sistemas

📚 caderno-ti.blogspot.com  ·  Prof. Elton Alex Silva

Comentários

Postagens mais visitadas deste blog

Introdução aos Sistemas de Gerenciamento de Banco de Dados

Comandos de Rede via CMD

Introdução ao HTML, CSS e JavaScript - Guia para Iniciantes