P1 LPCA
1. Fluxograma
O fluxograma é uma forma padronizada e eficaz para representar os passos
lógicos de um determinado processamento, simbologia gráfica.
Parte Símbolo Dica visual
Início/Fim Oval Começo/fim sempre oval
Leitura Paralelogramo Leia algo
Processamento de dados Retângulo Cálculos
Decisão
Losango Condições (sim/não)
(condicional/laço)
Saída Paralelogramo Mostrar algo
Nos fluxogramas, deve-se também adicionar tipos de variáveis, atribuição de
valores e impressão formatada em tela. Por exemplo:
2. Pseudocódigos
Use essa estrutura base em quase qualquer questão
Início
// 0. Determinação de variáveis
int variavel1;
float variavel2;
// 1. Leitura de dados
Leia variavel1, variavel2
// 2. Processamento
resultado <- variavel1 + variavel2
// 3. Decisão (se houver)
Se resultado > 10 então
Escreva "Maior que 10"
Senão
Escreva "Menor ou igual a 10"
FimSe
// 4. Saída
Escreva resultado
Fim
Exemplo de Fluxograma x Pseudocódigo
3. Linguagem C
Estrutura básica de um código em C:
#include <stdio.h>
int main() {
// código vai aqui
return 0;
}
Símbolo Nome do operador Significado / Uso Exemplo
Atribui um valor a
= Atribuição x = 5;
uma variável
Igualdade Verifica se dois
== if (x == 5)
(comparação) valores são iguais
Verifica se dois
!= Diferente valores são if (x != 10)
diferentes
Compara se um
< Menor que valor é menor que if (x < 10)
outro
Compara se um
> Maior que valor é maior que if (x > 0)
outro
Compara se é
<= Menor ou igual if (x <= 20)
menor ou igual
Compara se é maior
>= Maior ou igual if (x >= 1)
ou igual
Verdadeiro se as
&& E lógico (AND) duas condições if (x > 0 && x < 10)
forem verdadeiras
Verifica se uma
|| OU lógico (OR) condição ou outra if (x < 0 || x > 100)
forem verdadeiras
Inverte o valor
! NÃO lógico (NOT) lógico (verdadeiro if (!(x == 0))
vira falso, e vice)
+ Soma Adição entre valores resultado = a + b;
Subtração entre
- Subtração resultado = a - b;
valores
Multiplicação entre
* Multiplicação resultado = a * b;
valores
Divisão entre
/ Divisão valores (inteira se resultado = a / b;
forem int)
Módulo (resto da Resto da divisão
% resultado = a % b;
divisão) inteira
++ Incremento Soma 1 à variável x++; ou ++x;
-- Decremento Subtrai 1 da variável x--; ou --x;
Observações importantes:
● = é diferente de ==:
○ = atribui;
○ == compara.
● && e || são operadores lógicos usados dentro de estruturas como if ou while.
● % só funciona com números inteiros (int), não com float.
● Operadores como x++ ou ++x têm diferenças sutis em contexto de
expressões, mas para uso simples funcionam igual.
Tipos de variáveis e suas máscaras para a saída.
Lembrete: printf("Valor de x = %d", x);
Máscara Exemplo de
Tipo em C Descrição Tipo em C
(printf/scanf) uso
int idade;
int Número inteiro %d scanf("%d", int
&idade);
Número float nota;
float decimal %f scanf("%f", float
simples ¬a);
double media;
Número
double %lf scanf("%lf", double
decimal duplo
&media);
char letra;
char Um caractere %c scanf(" %c", char
&letra);
char
nome[50];
char[] / string Texto (string) %s char[]
scanf("%s",
nome);
● Use espaço antes de %c: scanf(" %c", &letra); ← evita ler o Enter da linha
anterior.
● Para printf de float/double com casas decimais: printf("%.2f", valor); → 2
casas.
● Para strings, não precisa usar &: scanf("%s", nome); ← correto.
4. Operadores e Estruturas de Decisão
A estrutura IF e ELSE serve para verificar uma informação e realizar
determinada ação a partir dela.
● Sintaxe:
if (condição) {
// comandos se a condição for verdadeira
} else {
// comandos se a condição for falsa
}
● Exemplo
int idade = 20;
if (idade >= 18) {
printf("Maior de idade\n");
} else {
printf("Menor de idade\n");
}
A estrutura SWITCH CASE é uma estrutura de seleção usada em C quando
você quer verificar vários valores possíveis de uma mesma variável, de forma mais
organizada do que vários if/else.
● Sintaxe
switch (variável) {
case valor1:
// comandos
break;
case valor2:
// comandos
break;
// ...
default:
// comandos se nenhum dos casos anteriores for
verdadeiro
break;
}
- A variável usada no switch geralmente é do tipo int ou char.
- O comando break impede que os próximos case também sejam executados
(isso se chama "fall-through").
- O default funciona como o else: é executado se nenhum caso bater.
5. Laços de repetição
a. While
Executa uma instrução ou bloco de instruções enquanto uma condição é válida, ou
seja, é verdade.
● Pseudocódigo
ENQUANTO(Condição for Verdade)
FAÇA
Processo A.
FIM ENQUANTO
Processo B.
● Sintaxe
while (<expressão_condicional>)
<comando>
while (<expressão_condicional>)
{
<comando>;
<comando>;
<comando>;
...
}
● Exemplo: Exiba na tela números de 1 a 100
int contador = 1;
while (contador <= 100) {
printf("%d\n", contador);
contador++;
}
b. For
Bastante utilizado quando já se conhece a priori a quantidade de vezes que o laço
será executado.
No comando for tanto a inicialização da variável quanto o teste lógico e o
incremento (ou decremento) ficam na mesma linha .
O comando é executado até que a expressão seja falsa.
● Sintaxe
for (inicialização; condição; incremento) {
// comandos
}
● Exemplo: Exiba na tela números de 1 a 100
for (int i = 0; i < 5; i++) {
printf("Valor de i: %d\n", i);
}
O break é usado dentro de um for (ou while ou switch) para ENCERRAR o laço
imediatamente — mesmo que a condição ainda permita continuar.
● Sintaxe
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // Sai do for
}
printf("%d\n", i);
}
● Saída
0
1
2
3
4
● Explicação
- O for iria de 0 a 9
- Mas quando i chega em 5, a condição i == 5 é verdadeira
- O break é executado e sai imediatamente do laço
- Nada depois disso dentro do for roda mais
c. Do - while
Garante pelo menos uma execução antes de verificar a condição.
● Sintaxe
do { <comando>;
<comando>;
<comando>;
<comando>;
...
} while (expressão_condicional);
● Exemplo
int i = 0;
do {
printf("Valor de i: %d\n", i);
i++;
} while (i < 5);
6. Vetores e Matrizes
- Vetor: estrutura que armazena vários valores de um mesmo tipo em linha.
- Matriz: estrutura que armazena valores em duas dimensões (linhas e
colunas).
a. Vetores
● Declaração
int numeros[5]; // vetor com 5 posições (índices de
0 a 4)
● Exemplo: Preencher um vetor e imprimir seus valores
#include <stdio.h>
int main() {
int i;
int notas[3];
// entrada de dados
for (i = 0; i < 3; i++) {
printf("Digite a nota %d: ", i + 1);
scanf("%d", ¬as[i]);
}
// saída de dados
for (i = 0; i < 3; i++) {
printf("Nota %d = %d\n", i + 1, notas[i]);
}
return 0;
}
● Entrada (scanf)
for (int i = 0; i < tamanho; i++) {
printf("Digite o valor da posição %d: ", i);
scanf("%d", &vetor[i]);
}
● Saída (printf)
for (int i = 0; i < tamanho; i++) {
printf("vetor[%d] = %d\n", i, vetor[i]);
}
b. Matrizes
● Declaração
int matriz[3][2]; // 3 linhas e 2 colunas
● Exemplo: Preencher e mostrar uma matriz 3x2
#include <stdio.h>
int main() {
int i, j;
int matriz[3][2];
// entrada de dados
for (i = 0; i < 3; i++) {
for (j = 0; j < 2; j++) {
printf("Digite o valor da posição [%d][%d]: ", i, j);
scanf("%d", &matriz[i][j]);
}
}
// saída de dados
printf("\nMatriz:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 2; j++) {
printf("%d\t", matriz[i][j]);
}
printf("\n");
}
return 0;
}
● Entrada (scanf)
for (int i = 0; i < linhas; i++) {
for (int j = 0; j < colunas; j++) {
printf("Digite o valor da posição [%d][%d]: ", i, j);
scanf("%d", &matriz[i][j]);
}
}
● Saída (printf) \t é para sair em formato tabulado
for (int i = 0; i < linhas; i++) {
for (int j = 0; j < colunas; j++) {
printf("%d\t", matriz[i][j]);
}
printf("\n");
}
● Para casos onde você quer definir o número de linhas e de colunas
#include <stdio.h>
int main() {
int linhas, colunas;
printf("Digite o número de linhas: ");
scanf("%d", &linhas);
printf("Digite o número de colunas: ");
scanf("%d", &colunas);
int matriz[linhas][colunas];
// Preenchendo a matriz
for (int i = 0; i < linhas; i++) {
for (int j = 0; j < colunas; j++) {
printf("Digite o valor da posição [%d][%d]: ", i, j);
scanf("%d", &matriz[i][j]);
}
}
// Exibindo a matriz
printf("\nMatriz:\n");
for (int i = 0; i < linhas; i++) {
for (int j = 0; j < colunas; j++) {
printf("%d\t", matriz[i][j]);
}
printf("\n");
}
return 0;
}