A lógica de programação é o alicerce de toda a programação de computadores. Trata-se da disciplina que nos ensina a analisar problemas, pensar de forma estruturada e criar soluções eficientes através de uma sequência lógica de instruções.
Com ela, aprendemos a desenvolver o raciocínio computacional, ou seja, a habilidade de decompor um problema em partes menores e mais simples, organizando os passos que uma máquina deverá seguir para atingir um determinado objetivo de forma automatizada, precisa e previsível.
Esse processo lógico é colocado em prática através dos algoritmos, que são conjuntos ordenados de ações para resolver tarefas específicas. Uma falha na lógica pode comprometer todo o funcionamento de um sistema, por isso sua compreensão é essencial.
O estudo da lógica é independente da linguagem de programação usada: você pode praticar com pseudocódigo, fluxogramas ou ambientes gráficos antes de aprender uma linguagem como Python, PHP ou JavaScript. Aprender lógica é o primeiro passo para se tornar um programador eficiente e criativo.
Ao começar a estudar programação, é essencial desenvolver a habilidade de pensar logicamente, decompondo problemas em etapas simples, chamadas de algoritmos. Um algoritmo nada mais é do que uma sequência ordenada de ações necessárias para atingir um objetivo.
Antes de transformar um problema em código, uma das técnicas fundamentais é a narração descritiva. Ela consiste em descrever com palavras simples o passo a passo necessário para resolver um desafio. É uma forma de "pensar em voz alta", organizando ideias de forma lógica.
Por exemplo, para saber se um número é par ou ímpar, poderíamos descrever assim:
“Pedir ao usuário que digite um número. Verificar se o número é divisível por 2. Se for, informar que é par. Caso contrário, informar que é ímpar.”
Além da narração descritiva, outra ferramenta poderosa na lógica de programação é o fluxograma. Ele é um diagrama que representa visualmente o fluxo de um algoritmo, utilizando símbolos gráficos padronizados para mostrar ações, decisões e caminhos possíveis.
Veja abaixo um exemplo de algoritmo representado em texto e como ele seria em um fluxograma:
O pseudocódigo é uma forma intermediária de escrever algoritmos utilizando uma linguagem próxima da linguagem humana, mas estruturada de forma lógica e sequencial.
Ele não precisa seguir uma linguagem de programação específica, pois seu objetivo é representar a lógica de maneira clara e compreensível.
Veja o exemplo abaixo:
início leia número se número % 2 == 0 então escreva "Número Par" senao escreva "Número Ímpar" fim
Neste exemplo, o programa lê um número e verifica se ele é divisível por 2. Se for, escreve “Número Par”, senão, escreve “Número Ímpar”. Simples, direto e lógico.
Exemplo de fluxo de decisão: par ou ímpar
Fluxogramas são ferramentas visuais que representam o fluxo lógico de um processo ou algoritmo por meio de símbolos gráficos padronizados. Eles são especialmente úteis no início do desenvolvimento de um programa, pois facilitam o entendimento e o planejamento da solução antes mesmo da escrita de código.
Conclusão: Usar fluxogramas desenvolve o pensamento estruturado, facilita a organização de ideias e proporciona uma base sólida para a criação de algoritmos eficientes, compreensíveis e bem planejados.
Neste curso, utilizaremos narração descritiva para compreender problemas, pseudocódigo para estruturar soluções, e diagramas para representar visualmente o raciocínio. Esses elementos são fundamentais para que você desenvolva pensamento computacional e comece a programar com confiança.
Vamos seguir juntos passo a passo, desde os conceitos mais simples até a criação de algoritmos funcionais. Com dedicação e prática, você aprenderá a pensar como um programador!
Tipos de dados definem o tipo de informação que uma variável pode armazenar. Em lógica de programação, os principais tipos são essenciais para definir como os dados serão tratados pelo programa. Veja abaixo os principais tipos:
Variáveis são espaços na memória usados para armazenar valores que podem mudar durante a execução de um programa. Já as constantes armazenam valores fixos.
inteiro idade = 18
Variáveis são utilizadas para guardar valores que podem mudar durante a execução de um programa. Cada variável possui um nome e um tipo associado. Por outro lado, constantes são identificadores que armazenam valores fixos e imutáveis.
Exemplo de declaração de variável:
inteiro idade = 18
Nesse exemplo, a variável idade
é do tipo inteiro e armazena o valor 18.
Operadores são símbolos especiais utilizados para executar operações em variáveis e valores. São classificados em:
+
: adição-
: subtração*
: multiplicação/
: divisão%
: módulo (resto da divisão)==
: igual a!=
: diferente de>
: maior que<
: menor que>=
: maior ou igual<=
: menor ou igual&&
: E lógico||
: OU lógico!
: negaçãoEstruturas condicionais permitem que o programa escolha entre dois ou mais caminhos com base em condições. A estrutura mais comum é:
se (condição) { // instruções se verdadeiro } senao { // instruções se falso }
Exemplo: Verificar se um número é positivo.
se (numero > 0) { escreva("Número positivo") } senao { escreva("Número negativo ou zero") }
se (idade >= 18) { escreva("Maior de idade") } senao { escreva("Menor de idade") }
As estruturas de repetição são utilizadas para executar um bloco de código várias vezes. São úteis para automatizar tarefas repetitivas.
para (i = 0; i < 10; i++) { escreva(i) }
enquanto (condição) { // instruções }
repita { // instruções } enquanto (condição);
para (i = 0; i < 10; i++) { escreva(i) }
Exemplo: verificar se um número é par ou ímpar.
inteiro numero escreva("Digite um número: ") leia(numero) se (numero % 2 == 0) { escreva("Número par") } senao { escreva("Número ímpar") }
Resolva os exercícios abaixo e teste seus conhecimentos!
Ir para Exercícios PráticosContexto: Em linguagens como C, Python e JavaScript, vetores são indexados a partir de um número base.
Contexto: Em um sistema de atendimento, os primeiros a chegarem são os primeiros a serem atendidos.
Contexto: A operação OR (OU) retorna verdadeiro se pelo menos uma das condições for verdadeira.
Contexto: Uma pilha funciona como uma pilha de pratos: adiciona no topo, remove do topo.
Contexto: A operação NOT inverte o valor lógico de uma variável.
Contexto: Suponha que o vetor tenha 5 posições.
Contexto: Em uma condição composta, todas devem ser satisfeitas.
Contexto: Em filas, essa operação adiciona elementos.
Contexto: O resultado é verdadeiro se os valores forem diferentes.
Contexto: Vetores normalmente são indexados a partir de zero.
Leia 10 números e armazene em um vetor. Exiba a soma apenas dos números pares.
Inverta a ordem das letras de uma palavra usando uma pilha.
Leia 10 números e armazene em um vetor. Exiba a soma apenas dos números pares armazenados.
Implemente uma pilha para inverter a ordem das letras de uma palavra digitada pelo usuário.
Crie uma fila de atendimento com 5 pessoas. Simule a chamada sequencial de cada uma delas.
Construa a tabela verdade da operação AND para duas variáveis booleanas (A e B).
Preencha um vetor com 5 nomes. Permita ao usuário digitar um nome e informe se ele está no vetor.
Verifique se uma palavra digitada é um palíndromo usando uma pilha para comparar as letras.
Receba o nome de 5 alunos em ordem de chegada. Mostre a ordem de apresentação de seus trabalhos.
Construa a tabela verdade da operação OR para duas variáveis booleanas (A e B).
Receba dois vetores com 5 elementos cada. Calcule e exiba um novo vetor com a subtração elemento a elemento.
Monte a tabela verdade para a expressão lógica: (A OR B) AND (NOT A).