🚀 Estrutura Sequencial em Programação
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:
- A expressão à direita do
=é totalmente calculada. - 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:
*,/,%(são avaliados primeiro, da esquerda para a direita)+,-(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: 1670 / (5 + 2) * 4→70 / 7 * 4→10 * 4→ Resultado: 4015 % 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 comandoprintlnseparado 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
%.2fpara 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 aoscanfo endereço de memória onde guardar o valor lido, não o valor em si. Vetores comonomesã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 exigemfgets(), 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_PIno Code::Blocks: dependendo da configuração do compilador,M_PIpode 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_DEFINESantes 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 × comprimentopreç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 × alturaperí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).
- Crie um Novo Projeto: Abra o Code::Blocks e vá em
File > New > Project.... Escolha o template Console Application, clique emGo, selecione a linguagem C (não C++) e siga o assistente até o final, dando um nome ao projeto (ex:Terreno). - Edite o Arquivo
main.c: O Code::Blocks já cria ummain.ccom um “Hello World”. Apague o conteúdo e cole um dos exemplos acima. - 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 linhasystem("pause");logo antes doreturn 0;— só como recurso didático, não é uma prática recomendada em código profissional.