Introdução
Neste tutorial, vamos explorar o Racket, uma linguagem de programação funcional derivada do Scheme, e mostrar como desenvolver aplicações de linha de comando utilizando o framework Racket-Based CLI. Este guia profundo e prático é moldado para desenvolvedores interessados em aprender sobre a programação funcional em Racket e como criar interfaces de linha de comando interativas. Desbravaremos as ferramentas de teste automatizado em Racket, proporcionando um ciclo de desenvolvimento robusto e eficiente. Se você é novo no Racket ou busca expandir suas habilidades, este tutorial irá guiá-lo em cada passo do processo, desde a configuração do ambiente até a execução de testes automatizados.
Etapas
Configuração do Ambiente de Desenvolvimento
Certifique-se de ter o Racket instalado em sua máquina. Você pode baixar a versão mais recente do Racket em https://racket-lang.org/. Após a instalação, verifique se o comando ‘racket’ está acessível no terminal executando o comando `racket –version`. Isso confirmará que o Racket está pronto para uso.
commands# Verificar versão do Racket
racket --versionCriando o Projeto de Linha de Comando
Crie um novo diretório para o seu projeto. Dentro deste diretório, crie um arquivo chamado `main.rkt`, que será o ponto de entrada da sua aplicação de linha de comando.
commands# Criar diretório do projeto
mkdir meu_projeto_racket
cd meu_projeto_racket
# Criar arquivo main.rkt
touch main.rktImplementação de uma Aplicação de Linha de Comando Simples
Adicione o seguinte código ao arquivo `main.rkt`. Este exemplo cria uma aplicação de linha de comando que aceita uma entrada do usuário e exibe uma saudação personalizada.
main.rkt#lang racket (define (saudacao nome) (printf "Olá, ~a! Bem-vindo ao Racket CLI!~n" nome)) (define (main) (printf "Por favor, insira seu nome: ") (let ([nome (read-line)]) (saudacao nome))) (main)
Executando a Aplicação
Para executar sua aplicação, use o seguinte comando no terminal. Isso iniciará a aplicação e solicitará ao usuário que insira seu nome.
commands# Executar a aplicação
racket main.rktIntroduzindo Argumentos de Linha de Comando
Vamos modificar o `main.rkt` para que ele aceite um argumento de linha de comando em vez de solicitar uma entrada interativa. Substitua o conteúdo de `main` pelo seguinte código:
main.rkt#lang racket (define (saudacao nome) (printf "Olá, ~a! Bem-vindo ao Racket CLI!~n" nome)) (define (main) (define nome (vector-ref (current-command-line-arguments) 0)) (saudacao nome)) (main)
Executando com Argumentos
Agora, ao executar sua aplicação, você poderá passar um argumento diretamente do terminal. Utilize o seguinte comando para executar a aplicação e passar um nome como argumento.
commands# Executar a aplicação com argumento
racket main.rkt 'SeuNome'Testes Automatizados com Racket
Instale a biblioteca `rackunit` para facilitar a criação de testes. Para isso, adicione a seguinte linha ao seu código no início do `main.rkt` para importar o módulo de testes.
main.rkt(require rackunit) #lang racket ... (restante do código permanece o mesmo)
Criando Testes para sua Função de Saudação
Crie um novo arquivo chamado `test-main.rkt` no mesmo diretório e adicione o seguinte código de teste para validar a função `saudacao`.
test-main.rkt#lang racket (require rackunit) (require 'main) (check-equal? (saudacao "Carlos") "Olá, Carlos! Bem-vindo ao Racket CLI!
")Executando os Testes
Para rodar os testes que você criou, execute o seguinte comando no terminal, apontando para o arquivo de teste.
commands# Executar os testes
racket test-main.rkt
Conclusão
Neste tutorial, você aprendeu a desenvolver uma aplicação de linha de comando simples em Racket, explorando desde a configuração do ambiente até a implementação de testes automatizados. Através dos passos apresentáveis, você pode estender suas habilidades em Racket, testando e implementando novas funcionalidades. Hoje, você possui as ferramentas e o conhecimento para criar aplicações robustas com Racket e realizar testes para garantir a qualidade do seu código. Continue explorando e expandindo suas habilidades nesta linguagem versátil!