Durante nossas aulas de hoje, demos início ao estudo formal de algoritmos e lógica de programação. Vimos que um algoritmo é essencialmente uma sequência finita de passos bem definidos que resolvem um problema. É a base de tudo o que fazemos na computação.

O que é um Algoritmo?

Um algoritmo não precisa ser algo relacionado a computadores. Uma receita de bolo, um manual de instruções ou uma rota de navegação são exemplos de algoritmos. A diferença é que, na computação, esses passos precisam ser escritos em uma linguagem que a máquina consiga interpretar.

Características principais de um algoritmo:

  • Finito: Deve terminar após um número finito de passos.
  • Definido: Cada passo deve ser claro e sem ambiguidades.
  • Efetivo: Deve ser possível executar cada passo com os recursos disponíveis.
  • Entrada e Saída: Deve receber dados de entrada e produzir uma saída.

Variáveis e Tipos de Dados

Para armazenar as informações durante a execução de um algoritmo, usamos variáveis. Uma variável é um espaço na memória que guarda um valor que pode ser alterado ao longo do programa.

Em linguagens de programação (como Python, Java, C, etc.), as variáveis possuem tipos. Os tipos mais comuns são:

  • Inteiro (int): Números inteiros (ex: 10, -5, 0).
  • Real (float/double): Números com ponto flutuante (ex: 3.14, -0.5).
  • Caractere / String: Texto (ex: "Olá, mundo!").
  • Lógico (bool): Verdadeiro ou Falso (True/False).

Escolher o tipo de dado correto é fundamental para a eficiência e clareza do código.

Operadores

Os operadores são usados para manipular os dados contidos nas variáveis. Vimos três categorias principais:

  1. Operadores Aritméticos: Realizam operações matemáticas.
    • + (adição)
    • - (subtração)
    • * (multiplicação)
    • / (divisão)
    • % (módulo / resto da divisão)
  2. Operadores Relacionais: Comparam dois valores e retornam um booleano.
    • == (igual a)
    • != (diferente de)
    • > (maior que)
    • < (menor que)
    • >= (maior ou igual a)
    • <= (menor ou igual a)
  3. Operadores Lógicos: Combinam expressões booleanas.
    • E (AND): Retorna verdadeiro se todas as condições forem verdadeiras.
    • OU (OR): Retorna verdadeiro se pelo menos uma das condições for verdadeira.
    • NÃO (NOT): Inverte o valor lógico.

Estruturas de Decisão

Nem sempre um algoritmo executa todos os passos em sequência. Muitas vezes, precisamos tomar decisões com base em condições. É aí que entram as estruturas de decisão.

A mais comum é o SE... ENTÃO... SENÃO... (IF... ELSE...).

SE (media >= 7) {
    // Aluno aprovado
} SENÃO {
    // Aluno reprovado
}

O funcionamento é simples: uma condição é avaliada. Se for verdadeira, um bloco de código é executado. Se for falsa, outro bloco (opcional) é executado. Podemos encadear várias condições com SENÃO SE (ELSE IF).

Exemplo Prático: Calculando a Média

Vamos construir um algoritmo simples que calcula a média de duas notas de um aluno e diz se ele está aprovado ou reprovado (considerando média >= 7).

Algoritmo em Português Estruturado:

1. Início
2. Declarar variaveis: nota1, nota2, media (real)
3. Ler nota1
4. Ler nota2
5. media = (nota1 + nota2) / 2
6. Se media >= 7 Então
7.     Escrever "Aprovado!"
8. Senão
9.     Escrever "Reprovado!"
10. Fim Se
11. Fim

Em Python:

nota1 = float(input("Digite a primeira nota: "))
nota2 = float(input("Digite a segunda nota: "))
media = (nota1 + nota2) / 2

if media >= 7:
    print("Aprovado!")
else:
    print("Reprovado!")

Este exemplo ilustra bem o uso de variáveis, operadores aritméticos, operadores relacionais e estruturas de decisão.

Considerações Finais e Próximos Passos

O conteúdo de hoje é a base da lógica de programação. Dominar esses conceitos é essencial para avançar para tópicos mais complexos. Nos próximos dias, vamos explorar estruturas de repetição (laços while, for) e vetores (arrays), que nos permitirão resolver problemas muito mais interessantes.

É importante praticar! Tente modificar o exemplo da média para calcular a média de 3 notas, ou adicionar uma condição para o aluno com média entre 5 e 7 (recuperação).

FAQ - Dúvidas Comuns

P: Qual a diferença entre = e ==?
R: Em muitas linguagens (como Python, Java, C), = é o operador de atribuição (coloca um valor dentro de uma variável), enquanto == é o operador de comparação (verifica se dois valores são iguais).
P: Preciso decorar todos os operadores?
R: Com a prática, eles se tornam naturais. O importante é entender a lógica de cada um. Consultar uma tabela de operadores é normal no início.
P: Um algoritmo pode não ter entrada?
R: Sim. Um algoritmo pode apenas processar dados já existentes e gerar uma saída, ou apenas exibir uma mensagem fixa. Nem todo algoritmo precisa de entrada variável.