Este capítulo aborda os conceitos fundamentais da estrutura sequencial, a base para a construção de qualquer algoritmo. Nela, os comandos são executados em uma sequência lógica, um após o outro, de cima para baixo.

🤔 O que é a Estrutura Sequencial?

A “estrutura sequencial” recebe esse nome para destacar que as instruções de um algoritmo são executadas em uma ordem predefinida, passo a passo. Um algoritmo só funciona corretamente se seus comandos seguirem uma sequência lógica.

Imagine que você precisa calcular a soma de dois números. Primeiro, você precisa conhecer esses números e, só depois, realizar a soma.

Exemplo da ordem correta:

// 1. Atribui o valor 15 à variável x
int x = 15;

// 2. Atribui o valor 25 à variável y
int y = 25;

// 3. Soma x e y e guarda o resultado
int soma = x + y; // Correto!

Se a ordem for invertida, o programa tentará somar variáveis que ainda não têm valor, resultando em um erro.

Exemplo da ordem incorreta:

// 1. Tenta somar x e y, que ainda não foram definidos
int soma = x + y; // Errado!

// 2. Só depois define os valores
int x = 15;
int y = 25;

💻 As Três Operações Fundamentais

Um programa de computador, em sua essência, realiza três operações básicas:

  • Entrada de dados: Receber informações do usuário ou de outra fonte.
  • Processamento de dados: Realizar cálculos e manipular as informações recebidas.
  • Saída de dados: Apresentar os resultados para o usuário.

📦 Variáveis e Tipos de Dados

Para um programa funcionar, ele precisa armazenar e manipular dados. Esses dados são guardados em variáveis.

De forma simplificada, uma variável é um “espaço” na memória RAM do computador reservado para armazenar um dado durante a execução do programa.

📜 Declaração de Variáveis

Cada variável possui:

  • Nome (ou identificador): Para que possamos nos referir a ela.
  • Tipo: Define que tipo de dado ela pode armazenar (número, texto, etc.).
  • Valor: O dado que está armazenado nela.
  • Endereço: Sua localização na memória.

Em C, a sintaxe de declaração é:

<tipo> <nome>;

// Exemplos
int idade;
double altura;
char nome[50]; // um texto em C é um vetor de caracteres

🏷️ Nomenclatura de Variáveis (Boas Práticas)

Para manter o código legível e funcional, siga estas regras ao nomear variáveis:

  • Não pode começar com dígito: Use uma letra ou o caractere _.
  • Não pode ter espaços em branco.
  • Não use acentos ou caracteres especiais (como ç ou ~).
  • Use o padrão “Camel Case”: A primeira palavra começa com letra minúscula e as palavras seguintes começam com maiúscula.
Errado Correto
int 5minutos; int cincoMinutos;
double salário; double salario;
char nome do funcionario[50]; char nomeDoFuncionario[50];

📊 Tipos de Dados Primitivos em C

Estes são os tipos de dados mais comuns que você usará:

Tipo Descrição Exemplo de Valor
int Armazena números inteiros. 35
double Armazena números com ponto flutuante (decimais). 1.75
char Armazena um único caractere. 'M'
char[] Armazena sequências de caracteres (texto) — um vetor de char. "Maria da Silva"
int (ou bool com <stdbool.h>) Armazena um valor lógico: 0 é falso, qualquer outro valor é verdadeiro. 1 (verdadeiro) ou 0 (falso)

⚙️ Processamento de Dados

O processamento ocorre quando o programa realiza cálculos ou manipula dados. A principal ferramenta para isso é o comando de atribuição, representado pelo sinal de igual (=) em C.

Sintaxe: <variável> = <expressão>;

A regra é simples:

  1. A expressão à direita do = é totalmente calculada.
  2. O resultado final é armazenado na variável à esquerda.

➕ Expressões Aritméticas

São combinações de números, variáveis e operadores que resultam em um valor numérico.

Operadores Aritméticos em C:

Operador Significado
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Módulo (resto da divisão inteira)

Ordem de Precedência:

  1. *, /, % (são avaliados primeiro, da esquerda para a direita)
  2. +, - (são avaliados por último, da esquerda para a direita)

Use parênteses () para forçar uma ordem de cálculo diferente.

Exemplos de Expressões:

  • 5 + 3 * 2 → 5 + 6 → Resultado: 11
  • (5 + 3) * 2 → 8 * 2 → Resultado: 16
  • 70 / (5 + 2) * 4 → 70 / 7 * 4 → 10 * 4 → Resultado: 40
  • 15 % 4 (15 dividido por 4 dá 3 e sobra 3) → Resultado: 3

🖥️ Saída de Dados

A saída de dados é como o programa apresenta informações e resultados ao usuário, geralmente na tela (console). Em C, usamos a função printf(), definida na biblioteca <stdio.h>:

  • printf("texto\n");: escreve o conteúdo na tela. O caractere especial \n (nova linha) precisa ser adicionado manualmente para saltar para a próxima linha — diferente de outras linguagens que têm um comando println separado só para isso.
  • printf("texto"); (sem \n): escreve o conteúdo na tela e permanece na mesma linha.

Exemplo Prático: Ficha de Cadastro

Vamos criar variáveis, atribuir valores e exibi-las de forma organizada.

#include <stdio.h>

int main() {
    // Declarando e inicializando as variáveis
    char produto1[50] = "Smartphone";
    char produto2[50] = "Notebook";

    double preco1 = 2500.99;
    double preco2 = 4250.00;

    int idade = 25;
    int codigo = 1024;
    char genero = 'M';

    // Exibindo os dados na tela
    printf("Produtos:\n");
    printf("O produto %s custa R$%.2f\n", produto1, preco1); printf("O produto %s custa R$ %.2f\n", produto2, preco2);
    printf("\n"); // Pula uma linha em branco
    printf("Codigo = %d\n", codigo);
    printf("\n"); // Pula uma linha em branco
    printf("Dados da pessoa: genero %c e idade %d\n", genero, idade);

    return 0;
}

Saída Esperada:

Produtos:
O produto Smartphone custa R$2500.99 O produto Notebook custa R$ 4250.00

Codigo = 1024

Dados da pessoa: genero M e idade 25

Nota: Usamos %.2f para formatar os preços com duas casas decimais — é um especificador que formata um número de ponto flutuante (f) com duas casas decimais (.2). Repare também que evitamos acentos (Código→Codigo, gênero→genero) nos textos impressos: o console do Windows aberto pelo Code::Blocks/MinGW nem sempre exibe corretamente caracteres acentuados por padrão — escrever sem acento é a forma mais simples de evitar esse problema neste estágio do curso.

⌨️ Entrada de Dados

A entrada de dados permite que o programa se torne interativo, lendo informações digitadas pelo usuário no teclado. Em C, usamos a função scanf(), também da biblioteca <stdio.h> — diferente de Java, não é preciso criar nenhum objeto especial antes, basta incluir o cabeçalho e chamar a função diretamente.

#include <stdio.h>

int main() {
    // Agora você pode ler os dados
    // ...

    return 0;
}

Lendo Diferentes Tipos de Dados

#include <stdio.h>

int main() {
    char nome[50];
    int idade;
    double salario;

    printf("Digite seu nome: ");
    scanf("%s", nome); // Lê uma palavra (sem espaços)

    printf("Digite sua idade: ");
    scanf("%d", &idade); // Lê um número inteiro

    printf("Digite seu salario: ");
    scanf("%lf", &salario); // Lê um número double

    printf("DADOS DIGITADOS:\n");
    printf("Nome: %s\n", nome);
    printf("Idade: %d\n", idade);
    printf("Salario: R$ %.2f\n", salario);

    return 0;
}

Atenção: Em C, o & antes do nome da variável (&idade, &salario) é obrigatório para tipos simples — ele diz ao scanf o endereço de memória onde guardar o valor lido, não o valor em si. Vetores como nome são uma exceção: o nome do vetor já É um endereço, então não se usa &nome. Outra particularidade importante: scanf("%s", ...) lê apenas uma palavra (para no primeiro espaço em branco) — não é possível ler "Maria da Silva" inteiro dessa forma; nomes compostos exigem fgets(), um recurso mais avançado que será visto adiante no curso.

🧮 Funções Matemáticas em C

C oferece a biblioteca <math.h> com diversas funções matemáticas prontas para uso — é preciso incluir #include <math.h> no início do arquivo para usá-las.

Exemplo em C Significado
a = sqrt(x); A variável a recebe a raiz quadrada de x.
a = pow(x, y); A variável a recebe o resultado de x elevado a y.
a = fabs(x); A variável a recebe o valor absoluto (positivo) de x.
a = M_PI; A variável a recebe o valor de Pi (3.14159…), constante definida em <math.h>.

💡 Nota sobre M_PI no Code::Blocks: dependendo da configuração do compilador, M_PI pode não estar disponível de imediato. Se o Code::Blocks acusar erro de “M_PI não declarado”, adicione a linha #define _USE_MATH_DEFINES antes do #include <math.h>, ou simplesmente declare sua própria constante: #define PI 3.14159.

Exemplo: Fórmula de Bhaskara

Para calcular as raízes de uma equação de segundo grau (\(ax^2 + bx + c = 0\)), usamos as funções de <math.h>.

\(\Delta = b^2 - 4ac\) \(x = \frac{-b \pm \sqrt{\Delta} }{2a}\)

#include <stdio.h>
#include <math.h>

int main() {
    double a = 1.0, b = -3.0, c = -4.0;

    double delta = pow(b, 2.0) - 4 * a * c;
    double x1 = (-b + sqrt(delta)) / (2.0 * a);
    double x2 = (-b - sqrt(delta)) / (2.0 * a);

    printf("Delta = %.1f\n", delta); // Saída: Delta = 25.0
    printf("x1 = %.1f\n", x1);       // Saída: x1 = 4.0
    printf("x2 = %.1f\n", x2);       // Saída: x2 = -1.0

    return 0;
}

✍️ Exercícios Práticos Resolvidos em C

Vamos aplicar tudo o que aprendemos em alguns problemas práticos.

Exercício 1: Cálculo de Área de Terreno

Problema: Fazer um programa que leia a largura e o comprimento de um terreno retangular, e também o valor do metro quadrado. Em seguida, o programa deve mostrar o valor da área do terreno e o valor do preço do terreno, ambos com duas casas decimais.

Fórmulas:

  • área = largura × comprimento
  • preço = área × preço do metro quadrado

Solução em C:

#include <stdio.h>

int main() {
    double largura, comprimento, valorMetroQuadrado;

    printf("Digite a largura do terreno: ");
    scanf("%lf", &largura);

    printf("Digite o comprimento do terreno: ");
    scanf("%lf", &comprimento);

    printf("Digite o valor do metro quadrado: ");
    scanf("%lf", &valorMetroQuadrado);

    double area = largura * comprimento;
    double preco = area * valorMetroQuadrado;

    printf("Area do terreno = %.2f\n", area);
    printf("Preco do terreno = %.2f\n", preco);

    return 0;
}

Exemplo de Execução:

Digite a largura do terreno: 15.0
Digite o comprimento do terreno: 40.0
Digite o valor do metro quadrado: 500.0
Area do terreno = 600.00
Preco do terreno = 300000.00

Exercício 2: Medidas de um Retângulo

Problema: Fazer um programa para ler as medidas da base e da altura de um retângulo. Em seguida, mostrar o valor da área, do perímetro e da diagonal deste retângulo, com quatro casas decimais.

Fórmulas:

  • área = base × altura
  • perímetro = 2 × (base + altura)
  • diagonal = √(base² + altura²)

Solução em C:

#include <stdio.h>
#include <math.h>

int main() {
    double base, altura;

    printf("Digite a base do retangulo: ");
    scanf("%lf", &base);

    printf("Digite a altura do retangulo: ");
    scanf("%lf", &altura);

    double area = base * altura;
    double perimetro = 2 * (base + altura);
    double diagonal = sqrt(pow(base, 2.0) + pow(altura, 2.0));

    printf("AREA = %.4f\n", area);
    printf("PERIMETRO = %.4f\n", perimetro);
    printf("DIAGONAL = %.4f\n", diagonal);

    return 0;
}

Exemplo de Execução:

Digite a base do retangulo: 6.0
Digite a altura do retangulo: 8.0
AREA = 48.0000
PERIMETRO = 28.0000
DIAGONAL = 10.0000

🛠️ Como Executar no Code::Blocks

Você pode compilar e executar todos os exemplos de código acima usando o Code::Blocks, a IDE recomendada para este curso (veja o guia de instalação em Configuração do Ambiente).

  1. Crie um Novo Projeto: Abra o Code::Blocks e vá em File > New > Project.... Escolha o template Console Application, clique em Go, selecione a linguagem C (não C++) e siga o assistente até o final, dando um nome ao projeto (ex: Terreno).
  2. Edite o Arquivo main.c: O Code::Blocks já cria um main.c com um “Hello World”. Apague o conteúdo e cole um dos exemplos acima.
  3. Compile e Execute: Pressione F9 (ou clique no botão “Build and Run”, o ícone amarelo com engrenagem e seta verde). O Code::Blocks compila o código e abre uma janela de console com a saída do programa.

💡 Dica: o Code::Blocks normalmente mantém a janela de console aberta ao final da execução (com um “Press any key to continue…”), então você consegue ler a saída com calma. Se isso não acontecer no seu ambiente, adicione #include <stdlib.h> e a linha system("pause"); logo antes do return 0; — só como recurso didático, não é uma prática recomendada em código profissional.