O que é inteligência artificial?

Nos últimos anos, o termo inteligência artificial (IA) tomou conta da mídia e passou a fazer parte do vocabulário cotidiano de todo mundo. Presente em áreas que vão da saúde à indústria, da educação ao entretenimento, a Inteligência Artificial é um ramo da ciência da computação cujo objetivo é automatizar tarefas e aumentar a eficiência, precisão e produtividade na sua execução.

Para alcançar esse objetivo, sistemas de inteligência artificial procuram simular capacidades humanas, como raciocínio, aprendizado, percepção e tomada de decisões. Em outras palavras, algoritmos de inteligência artificial são modelos computacionais que permitem às máquinas executarem tarefas que, tradicionalmente, exigiriam inteligência humana.

Mas afinal, o que realmente é uma inteligência artificial? Como ela surgiu? Quais as principais ferramentas e chatbots da atualidade? Neste artigo, vamos responder a essas e outras perguntas. Vamos começar?

1 – O que é Inteligência Artificial?

Em essência, a Inteligência Artificial é um campo da ciência da computação que se dedica ao estudos e à criação de máquinas capazes de simular a inteligência humana. Isso envolve capacitá-las a aprender, raciocinar, resolver problemas, perceber contextos e entender a linguagem utilizada na comunicação. O objetivo principal da IA não é necessariamente substituir o cérebro humano, mas sim aprimorar nossas capacidades. O uso da IA permite automatizar tarefas complexas e descobrir padrões que seriam invisíveis para nós.

Para uma máquina ser considerada “inteligente”, ela precisa cumprir alguns requisitos como: processar grandes volumes de dados, identificar relações, tomar decisões baseadas nesses dados e melhorar seu desempenho ao longo do tempo, sem ser explicitamente programada para cada cenário.

1.1 – Como surgiram as primeiras Inteligências Artificiais?

Por mais surpreendente que possa parecer, a ideia de máquinas pensantes não é nova e remonta a séculos, com mitos e ficção científica. No entanto, o nascimento formal da Inteligência Artificial como campo de estudo é geralmente atribuído à Conferência de Dartmouth em 1956.

Foi nesse evento que o termo “Inteligência Artificial” foi cunhado por John McCarthy e onde pesquisadores proeminentes se reuniram para discutir a possibilidade de construir máquinas que poderiam “aprender e pensar”.

Nos anos que se seguiram, a IA passou por períodos de grande otimismo, seguidos por “invernos da IA”, onde o financiamento e o interesse diminuíram devido às limitações tecnológicas da época. No entanto, os avanços na capacidade de processamento dos computadores e o desenvolvimento de algoritmos mais sofisticados para tratar grandes volumes de dados (Big Data) pavimentaram o caminho para o renascimento da IA, nos conduzindo ao cenário que vivenciamos hoje.

2 – Tipos de IAs

As Inteligências Artificiais podem ser classificadas de várias formas, mas uma das mais comuns é a divisão em IA Fraca e IA Forte:

  • IA Fraca (ou IA Estreita/Limitada): são as IAs que hoje vemos em praticamente todas as aplicações. Ela é projetada e treinada para executar uma tarefa específica e bem definida. Exemplos incluem assistentes de voz (Siri, Alexa), chatbots (ChatGPT, Gemini), sistemas de condução de carros autônomos ou softwares de reconhecimento facial. Esses sistemas não possuem consciência nem inteligência geral, apenas executam sua função designada.
  • IA Forte (ou IA Geral/Completa): é o tipo de IA que se equipararia à inteligência humana em todos os aspectos, sendo capaz de entender, aprender e aplicar sua inteligência para resolver qualquer problema, assim como um ser humano. Atualmente, a IA forte permanece no campo da teoria e da ficção científica, sem que tenhamos atingido esse nível de desenvolvimento.

3 – Técnicas de aprendizado de máquina

Dentro do campo da IA, o Aprendizado de Máquina (Machine Learning – ML) é uma das áreas mais cruciais. É através dele que as máquinas adquirem a capacidade de aprender a partir dos dados. As principais técnicas incluem:

  • Aprendizado Supervisionado: a máquina é treinada com um conjunto de dados que já possui “respostas” (rótulos). Por exemplo, você alimenta o algoritmo com fotos de cães e gatos, e para cada foto, informa se é um cão ou um gato. Com o tempo, ele aprende a distinguir os dois por conta própria. É ideal para tarefas de classificação e regressão.
  • Aprendizado Não Supervisionado: neste caso, o algoritmo recebe dados sem rótulos e precisa encontrar padrões, estruturas ou agrupamentos por sua conta. É útil para identificar segmentos de clientes ou detectar anomalias em grandes conjuntos de dados.
  • Aprendizado por Reforço: a máquina aprende através de tentativa e erro, interagindo com um ambiente e recebendo “recompensas” ou “penalidades” por suas ações. É a base para o desenvolvimento de sistemas de jogos e robótica, onde o objetivo é otimizar o comportamento para maximizar as recompensas.
  • Deep Learning (Aprendizado Profundo): uma sub-área do Machine Learning que utiliza redes neurais artificiais com múltiplas camadas (por isso “profundo”) para modelar e processar dados de forma mais complexa. O Deep Learning é responsável por avanços notáveis em reconhecimento de voz, processamento de linguagem natural e visão computacional.

4 – Ferramentas de IA

O ecossistema de ferramentas de IA cresce exponencialmente dia a dia. Empresas e desenvolvedores contam com uma vasta gama de recursos para construir e implementar suas soluções. Algumas das mais proeminentes incluem:

4.1 – Principais ferramentas de IA na atualidade

  • TensorFlow (Google): uma das bibliotecas de código aberto mais populares para desenvolvimento de modelos de Machine Learning e Deep Learning. Amplamente utilizada para pesquisa e produção.
  • PyTorch (Meta/Facebook): outra biblioteca de código aberto muito utilizada para Deep Learning, conhecida por sua flexibilidade e facilidade de uso, especialmente para prototipagem rápida.
  • Scikit-learn: uma biblioteca Python versátil que oferece uma vasta gama de algoritmos de Machine Learning para tarefas como classificação, regressão, agrupamento e pré-processamento de dados.
  • Microsoft Azure AI: uma plataforma de serviços de IA baseada na nuvem que oferece APIs e ferramentas para integrar recursos de IA (visão computacional, processamento de linguagem natural, machine learning) em aplicações.
  • Amazon Web Services (AWS AI/ML): assim como o Azure, a AWS oferece um conjunto abrangente de serviços de IA e Machine Learning na nuvem, permitindo que desenvolvedores criem e implementem soluções de IA de forma escalável.
  • Google Cloud AI Platform: outra opção de plataforma de nuvem robusta com uma vasta gama de ferramentas e serviços para desenvolvimento e implantação de IA, desde modelos pré-treinados até ferramentas personalizáveis.
  • OpenAI API (OpenAI): uma das plataformas mais avançadas para integração de modelos de linguagem natural, como GPT (Generative Pre-trained Transformer), em aplicações. A OpenAI API permite realizar tarefas como geração de texto, tradução, resumo, atendimento automatizado, análise semântica e muito mais. É amplamente utilizada em chatbots, automação de conteúdo, assistentes virtuais e outras soluções baseadas em linguagem.

5 – Chatbots de IA

Os chatbots representam uma das aplicações mais visíveis e interativas da Inteligência Artificial, especialmente na área de Processamento de Linguagem Natural (PLN). Eles são softwares projetados para simular uma conversa humana, seja por texto ou voz. Os avanços recentes, impulsionados pelo Deep Learning, levaram a uma nova geração de chatbots muito mais avançados e sofisticados, entre os quais se destacam:

5.1 – Os principais chatbots da atualidade

  • ChatGPT (OpenAI): sem dúvida, um dos chatbots mais populares e influentes dos últimos tempos. Baseado nos modelos de linguagem GPT (Generative Pre-trained Transformer), é capaz de gerar textos coerentes e relevantes para uma vasta gama de tópicos, responder a perguntas complexas, escrever códigos, criar conteúdo criativo e muito mais. Sua versatilidade o tornou uma ferramenta poderosa para criadores de conteúdo, desenvolvedores e usuários em geral.
  • Google Gemini (Google): o Gemini é um modelo de IA multimodal que compete diretamente com o ChatGPT. Ele é projetado para ser altamente eficaz ao lidar com diferentes tipos de dados, incluindo texto, código, áudio, imagem e vídeo, prometendo uma experiência de conversação e geração de conteúdo ainda mais rica e integrada com o ecossistema Google.
  • Copilot (Microsoft): integrado aos produtos Microsoft (como Bing Chat, Microsoft 365, GitHub), o Copilot atua como um assistente de IA. No Bing Chat, ele potencializa a busca conversacional; no Microsoft 365, ajuda na criação de documentos e apresentações; e no GitHub, auxilia programadores na escrita de código. Sua força está na integração profunda com ferramentas de produtividade.
  • Claude (Anthropic): desenvolvido pela Anthropic, uma empresa focada em IA responsável e ética, o Claude é um modelo de linguagem que busca ser útil, inofensivo e honesto. Ele é conhecido por sua capacidade de lidar com conversas mais longas e por seu foco em segurança e alinhamento, sendo uma alternativa robusta para tarefas que exigem sensibilidade e confiabilidade.

Esses chatbots nos mostram como a IA está transformando a interação humano-máquina, tornando-a mais natural e eficiente. Eles estão redefinindo a forma como buscamos informações, aprendemos e criamos conteúdo.

Conclusão

A Inteligência Artificial é um campo em constante evolução, com o potencial de transformar a maneira como vivemos, trabalhamos e interagimos com o mundo. A Inteligência Artificial já não é mais uma promessa distante: está presente em nossas casas, celulares, carros e até em diagnósticos médicos.

Compreender o funcionamento das IAs é essencial para profissionais e estudantes de tecnologia, bem como para qualquer pessoa que queira entender o futuro que está se desenhando agora e se beneficiar dessa revolução tecnológica.

Espero que este conteúdo seja útil de alguma forma para você. Se gostou do conteúdo, compartilhe com seus amigos e aproveite para conhecer mais sobre TI e desenvolvimento de software.

O que é Java?

Java. Provavelmente, você já ouviu falar desse termo, seja em uma aula da faculdade, durante o desenvolvimento de um software, ou até mesmo no dia a dia, ao se deparar com algum aplicativo ou sistema. Mas o que exatamente é o Java? E por que ele é tão importante no mundo da programação?

Neste artigo, vamos mergulhar no universo Java, desvendando seus conceitos fundamentais, sua história, como dar os primeiros passos na sua instalação e até mesmo desenvolver um pequeno projeto prático. Vamos começar?

1 – O que é Java?

O Java é uma linguagem de programação de alto nível, orientada a objetos, reconhecida pela sua portabilidade e robustez. Desenvolvida pela Sun Microsystems (adquirida pela Oracle em 2010), a linguagem foi lançada em 1995 e rapidamente se tornou uma das mais populares e amplamente utilizadas no mundo.

Sua filosofia principal é “Write Once, Run Anywhere” (WORA), que significa “Escreva uma vez, execute em qualquer lugar”. Isso é possível graças à Máquina Virtual Java (JVM), que interpreta o código Java compilado (bytecode) e o executa em diferentes plataformas, independentemente do sistema operacional subjacente. Isso lhe confere uma portabilidade excepcional, sendo um dos seus principais diferenciais em comparação com outras linguagens disponíveis no mercado.

O Java é a base para uma infinidade de aplicações, como sistemas corporativos robustos, aplicativos móveis (principalmente Android), aplicações web (backends), jogos, Big Data, Internet das Coisas (IoT) e muito mais.

1.1 – Principais características

Até agora, já conseguimos ver que o Java se destaca por diversas características que o tornam uma escolha atraente para diversos projetos de desenvolvimento, desde os mais simples aos mais complexos. Porém, há uma série de outras características que tornam essa linguagem ainda mais poderosa:

  • Orientação a Objetos: tudo em Java é um objeto (com poucas exceções). Isso facilita a modelagem do mundo real em código, promovendo a reutilização, a modularidade e a manutenção do software.
  • Portabilidade: como mencionado, a JVM garante que o código Java possa ser executado em qualquer sistema operacional que possua uma JVM instalada, sem necessidade de recompilação.
  • Segurança: a linguagem foi projetada com a segurança em mente desde o início. A JVM oferece um ambiente seguro para a execução de programas, com recursos como sandboxing e verificação de bytecode.
  • Robustez: juntamente com a segurança, há também um forte tratamento de erros e exceções, o que ajuda a construir aplicações mais confiáveis e menos propensas a falhas.
  • Multithreading: o Java é uma linguagem que suporta multithreading nativamente, permitindo que os programas executem múltiplas tarefas simultaneamente, otimizando o uso dos recursos do processador e melhorando o desempenho das aplicações.
  • Alto Desempenho: embora seja interpretada pela JVM, o JIT (Just-In-Time) compiler otimiza o bytecode em tempo de execução, resultando em um desempenho muito próximo ao de linguagens compiladas.
  • Grandes Bibliotecas e Ecossistema: desenvolvedores Java possuem uma vasta coleção de APIs (Application Programming Interfaces) padrão e um enorme ecossistema de bibliotecas e frameworks de terceiros, o que acelera o desenvolvimento e oferece soluções para praticamente qualquer necessidade.
  • Comunidade Ativa: a comunidade Java é uma das maiores e mais ativas do mundo, oferecendo suporte, recursos, tutoriais e soluções para os mais diversos problemas.

2 – Como surgiu o Java?

A história do Java começa no início da década de 1990, na Sun Microsystems. Originalmente, o projeto, liderado por James Gosling, era conhecido como “Oak” e tinha como objetivo criar uma linguagem para dispositivos embarcados e eletrônicos de consumo. A ideia era ter uma linguagem que fosse independente de plataforma, leve e confiável.

No entanto, com o boom da World Wide Web, a equipe percebeu o potencial da sua criação para o desenvolvimento de aplicações para a internet. Em 1995, a linguagem foi oficialmente lançada com o nome Java, e rapidamente ganhou popularidade devido à sua capacidade de criar applets (pequenos programas executados em navegadores web), revolucionando a forma como o conteúdo interativo era entregue online. Desde então, a linguagem evoluiu e se adaptou, expandindo-se para diversos outros domínios de aplicação.

Em 2010, a Oracle Corporation adquiriu a Sun Microsystems e passou a ser a responsável pelo desenvolvimento e manutenção do Java até os dias atuais.

3 – Como instalar o Java?

Para começar a programar em Java, é necessário instalar o JDK (Java Development Kit), o qual inclui o compilador (chamado javac), ferramentas de desenvolvimento e a JVM (Java Virtual Machine). A seguir, vamos ver como instalar o Java nos principais sistemas operacionais:

3.1 – Instalação no Windows

1 – Acesse o site oficial da Oracle e baixe o instalador compatível com seu sistema (Windows x64 Installer).
2 – Execute o arquivo .exe e siga os passos do assistente de instalação.
3 – Após a instalação, se necessário, adicione o caminho do Java (geralmente C:\Program Files\Java\jdk-xx\bin) à variável de ambiente Path.
4 – Para verificar se está tudo certo, abra o Prompt de Comando e digite:

java -version

3.2 – Instalação no Linux

1 – Atualize os repositórios:

sudo apt update

2 – Instale o JDK:

sudo apt install openjdk-17-jdk

(Esse comando instala a versão 17 do Java. Substitua openjdk-17-jdk pela versão desejada, por exemplo, openjdk-11-jdk para a versão 11).

java -version

Além dos comandos acima, você também pode instalar o Java via pacote .tar.gz, .rpm ou .deb, os quais podem ser encontrados aqui.

3.3 – Instalação no macOS

1 – Baixe o JDK no site da Oracle.
2 – Execute o instalador .dmg.

O JDK será instalado no caminho padrão: /Library/Java/JavaVirtualMachines/.

3 – Para verificar: java -version

Caso prefira, também é possível instalar o Java no macOS utilizando o Homebrew:

brew install openjdk

3.4 – Escolhendo a IDE

Embora seja possível programar em Java com qualquer editor de texto, o uso de uma IDE (Integrated Development Environment) torna o desenvolvimento mais produtivo. Algumas das IDEs mais populares são:

  • IntelliJ IDEA: muito usado por profissionais de programação, oferece recursos avançados de análise de código e integração com frameworks modernos.
  • Eclipse: uma IDE gratuita e altamente extensível, usada amplamente em projetos corporativos.
  • NetBeans: simples e direta, essa IDE é ideal para quem está começando.
  • VS Code: um editor de código leve com suporte a Java via extensões. Ideal para quem prefere um ambiente mais genérico e quando se possui recursos limitados no computador.

4 – Java na prática: calculando variação percentual

Agora que temos o ambiente configurado, vamos colocar a mão na massa com um exemplo prático. Em vez do tradicional “Hello World!”, vamos desenvolver um programa que calcula a variação percentual entre dois números informados pelo usuário via terminal.

A fórmula para calcular a variação percentual é:

Variação percentual = ((Valor Final – Valor Inicial)/Valor Inicial) x 100

Vamos começar criando um arquivo chamado CalculadoraVariacaoPercentual.java. Nosso código para fazer esse cálculo será esse aqui:

import java.util.Scanner; // Importa a classe Scanner para ler a entrada do usuário

public class CalculadoraVariacaoPercentual {

    public static void main(String[] args) {

        // Cria um objeto Scanner para ler a entrada do console
        Scanner scanner = new Scanner(System.in);

        System.out.println("--- Calculadora de Variação Percentual ---");

        // Solicita e lê o valor inicial
        System.out.print("Digite o valor inicial: ");
        double valorInicial = scanner.nextDouble(); // Lê um número decimal (double)

        // Solicita e lê o valor final
        System.out.print("Digite o valor final: ");
        double valorFinal = scanner.nextDouble(); // Lê um número decimal (double)

        // Verifica se o valor inicial é zero para evitar divisão por zero
        if (valorInicial == 0) {
            System.out.println("Erro: O valor inicial não pode ser zero para calcular a variação percentual.");
        } else {
            // Calcula a variação
            double variacao = valorFinal - valorInicial;

            // Calcula a variação percentual
            double variacaoPercentual = (variacao / valorInicial) * 100;

            // Exibe os resultados
            System.out.println("\n--- Resultados ---");
            System.out.println("Valor Inicial: " + String.format("%.2f", valorInicial)); // Formata para 2 casas decimais
            System.out.println("Valor Final: " + String.format("%.2f", valorFinal));   // Formata para 2 casas decimais
            System.out.println("Variação Absoluta: " + String.format("%.2f", variacao)); // Formata para 2 casas decimais
            System.out.println("Variação Percentual: " + String.format("%.2f", variacaoPercentual) + "%"); // Formata e adiciona '%'
        }

        scanner.close(); // Fecha o objeto Scanner para liberar recursos
    }
}

Conclusão

Java é uma das linguagens mais relevantes no mundo da programação. Reconhecido como uma linguagem de programação poderosa e versátil, o Java possui uma história rica e um futuro promissor. Sua portabilidade, robustez, o vasto ecossistema e uma grande comunidade ativa tornam-na em uma excelente escolha para o desenvolvimento de uma ampla gama de aplicações.

Se você está pensando em aprender uma linguagem de programação, Java é, sem dúvida, uma excelente porta de entrada para o mundo do desenvolvimento de software. Com as ferramentas certas e o ambiente de desenvolvimento configurado, você está pronto para explorar todo o potencial dessa poderosa linguagem. Aproveite para criar seus primeiros projetos e junte-se à vibrante comunidade Java!

Espero que este conteúdo seja útil de alguma forma para você. Se gostou do conteúdo, compartilhe com seus amigos e aproveite para conhecer mais sobre programação aqui!

O que é programação estruturada?

No vasto universo do desenvolvimento de software, compreender os diferentes paradigmas de programação é crucial para qualquer profissional da área. Entre eles, a programação estruturada se destaca como um dos pilares que moldaram a forma como construímos sistemas. Mas o que exatamente ela significa e por que é tão relevante até hoje?

Neste texto, vamos entender o que é esse paradigma, como ele surgiu, quais são suas principais características e estruturas, e por que ele ainda é fundamental no aprendizado e, na prática da programação.

1 – O que é programação estruturada?

A programação estruturada é um paradigma de programação que preconiza a criação de programas organizados e de fácil entendimento, utilizando um conjunto limitado de estruturas de controle de fluxo. Ela surgiu como uma resposta aos desafios da programação não estruturada, que resultava em códigos complexos e difíceis de manter, popularmente conhecidos como “código espaguete”.

O objetivo principal da programação estruturada é simplificar o processo de desenvolvimento e depuração, promovendo a clareza e a modularidade do código. Em vez de saltos incondicionais (como o GOTO), ela incentiva o uso de construções bem definidas.

A programação estruturada parte da ideia central de que podemos desenvolver qualquer software, por mais complexo que ele seja, utilizando apenas três estruturas fundamentais de controle de fluxo.

  • Sequência: o sistema executa as instruções em ordem linear, uma após a outra. Essa é a forma mais básica de organizar um código, onde o sistema lê e processa cada comando na sequência em que ele aparece.
  • Seleção (ou Condição): permite que o programa execute diferentes blocos de código com base em uma condição. As estruturas mais comuns são o if/else (se/senão) e o switch/case (escolha/caso). Isso dá ao programa a capacidade de tomar decisões.
  • Iteração (ou Repetição/Loop): permite executar um bloco de código repetidamente enquanto uma condição for verdadeira ou por um número específico de vezes. Exemplos incluem for (para), while (enquanto) e do-while (faça-enquanto). Essas estruturas são essenciais para automatizar tarefas repetitivas.

Linguagens tradicionais como C, Pascal, Fortran, e ALGOL, por exemplo, adotam amplamente o paradigma da programação estruturada. Além delas, atualmente, muitas linguagens modernas como JavaScript, Python, PHP e outras também incorporam os princípios desse paradigma.

Em suma, a programação estruturada defende que a combinação dessas três estruturas básicas é suficiente para construir algoritmos eficientes, claros e fáceis de manter, independentemente da complexidade do problema.

2 – Quando esse paradigma de programação surgiu?

A programação estruturada ganhou força na década de 1960, impulsionada principalmente pelos trabalhos do cientista da computação Edsger W. Dijkstra. Na época, o desenvolvimento de software enfrentava uma crise de produtividade e qualidade. Os programas eram escritos de forma caótica, com muitos saltos GOTO que dificultavam o rastreamento do fluxo de execução e a identificação de erros. Desse modo, a manutenção e a expansão dos sistemas tornava-se um verdadeiro pesadelo.

Dijkstra, em seu famoso artigo “Go To Statement Considered Harmful” (Declaração Go To Considerada Prejudicial) de 1968, criticou severamente o uso indiscriminado do GOTO, argumentando que ele levava a programas “espalhafatosos” e ininteligíveis. Sua proposta era justamente a utilização das três estruturas de controle que mencionamos: sequência, seleção e iteração.

Assim, o surgimento da programação estruturada representou um avanço significativo para a engenharia de software, promovendo a modularidade, legibilidade e manutenibilidade do código. Ao dividir o programa em blocos menores e mais gerenciáveis (como funções e procedimentos), tornou-se mais fácil para os desenvolvedores entenderem, testarem e corrigirem partes específicas do sistema sem afetar o todo.

3 – Exemplo de programação estruturada

Com a finalidade de ilustrar os conceitos da programação estruturada, vamos analisar um exemplo simples de código que verifica se um número é par ou ímpar. Observe que, para fins didáticos, desenvolvemos esse código em três linguagens diferentes: JavaScript, Python e Java.

Ademais, note em cada linguagem utilizada, como a modularização das funções e o uso das estruturas de controle de fluxo acontecem na prática.

JSPythonC++

// Função para verificar se o número é par ou ímpar 
function verificarParOuImpar(numero) {

    // Utiliza uma estrutura condicional (if/else) para determinar a paridade
    if (numero % 2 === 0) {
        return "O número é par.";
    } else {
        return "O número é ímpar.";
    }
}

// Função principal para executar o programa 
function main() {
    var entradaValida = false;

    // Loop de repetição (while) para obter uma entrada numérica válida do usuário
    while (!entradaValida) {
        var numero = prompt("Digite um número inteiro: ");
        // Verifica se o valor inserido é de fato um número
        if (!isNaN(numero)) {
            entradaValida = true;
        } else {
            console.log("Por favor, digite um número válido.");
        }
    }

    // Invoca a função que checa a paridade do número (fluxo sequencial)
    console.log(verificarParOuImpar(numero));
}

// Inicia a execução do programa chamando a função principal (fluxo sequencial)
main();

# Função para verificar se o número é par ou ímpar
def verificar_par_ou_impar(numero):
    
    # Aplica uma condição (if/else) para checar se o número é par
    if numero % 2 == 0:
        return "O número é par."
    else:
        return "O número é ímpar."

# Função principal para executar o programa
def main():
    entrada_valida = False

    # Itera (loop while) até que o usuário forneça um número inteiro válido
    while not entrada_valida:
        numero_str = input("Digite um número inteiro: ")
        # Confere se a entrada fornecida é um número
        if numero_str.isdigit() or (numero_str.startswith('-') and numero_str[1:].isdigit()):
            numero = int(numero_str)
            entrada_valida = True
        else:
            print("Por favor, digite um número válido.")

    # Aciona a função que determina se o número é par ou ímpar (execução sequencial)
    print(verificar_par_ou_impar(numero))

# Garante que a função principal seja chamada ao executar o script
if __name__ == "__main__":
    main()

#include <iostream>
#include <string>  
#include <limits>   

// Função para verificar se o número é par ou ímpar
std::string verificarParOuImpar(int numero) {
    // Implementação de uma estrutura condicional (if/else) para validação
    if (numero % 2 == 0) {
        return "O número é par.";
    } else {
        return "O número é ímpar.";
    }
}

// Função principal para executar o programa
int main() {
    bool entradaValida = false;
    int numero = 0; // Inicializa a variável para ser usada no escopo

    // Estrutura de repetição (while) para garantir uma entrada numérica correta
    while (!entradaValida) {
        std::cout << "Digite um número inteiro: ";
        // Tenta ler um número inteiro
        if (std::cin >> numero) {
            entradaValida = true;
        } else {
            std::cout << "Por favor, digite um número válido." << std::endl;
            // Limpa o estado de erro do cin e descarta o restante da linha de entrada
            std::cin.clear();
            std::cin.ignore(std::numeric_limits::max(), '\n');
        }
    }

    // Chama a função que verifica a paridade do número (fluxo de execução)
    std::cout << verificarParOuImpar(numero) << std::endl;

    return 0; // Indica que o programa terminou com sucesso
}

Nestes exemplos, podemos observar claramente os princípios da Programação Estruturada aplicados na prática:

  • Modularidade: nas três linguagens que utilizamos em nosso exemplo, o código é dividido em duas funções, cada uma delas com sua responsabilidade específica.
    • verificarParOuImpar: função para verificar se o número é par ou ímpar.
    • main: função principal para executar o programa.
  • Estruturas de Controle: utilizamos if/else para tomar decisões (verificar par/ímpar e validar a entrada) e um while para repetir a solicitação de entrada até que um número válido seja fornecido.
  • Sequência: observe em todos os códigos que, tanto a organização das instruções dentro de cada função e as suas respectivas chamadas ocorrem em uma ordem lógica e sequencial.

Apesar de novos paradigmas terem surgido, como a programação orientada a objetos, a programação estruturada continua sendo a base para a escrita de código legível, eficiente e fácil de manter. Portanto, entender seus conceitos é fundamental para qualquer desenvolvedor que busca construir sistemas robustos e de alta qualidade.

Conclusão

A programação estruturada representou um divisor de águas na história do desenvolvimento de software, ao propor uma abordagem mais clara, lógica e modular para a construção de programas.

Mesmo que outros paradigmas tenham surgido, como a programação orientada a objetos e programação funcional, por exemplo, os princípios da programação estruturada continuam sendo amplamente utilizados e valorizados.

Por fim, podemos compreender que dominar a programação estruturada é um passo essencial para qualquer desenvolvedor, pois ela fornece a base para escrever códigos mais organizados, legíveis e fáceis de manter — qualidades indispensáveis na criação de sistemas robustos e duradouros.

Espero que este conteúdo seja útil de alguma forma para você. Se gostou do conteúdo, compartilhe com seus amigos e aproveite para conhecer mais sobre programação aqui!