Perl - Usando condicionais (parte 2)

Perl - Usando condicionais (parte 2)

By lingy | Lingy | 2 Feb 2023


bf70091d12f9c91aa2af1fe1375ee3f7c93de450a2afedcd63f94f19098ea520.png

Ok, você deve estar pensando agora “tá, mas por que esse tutorial teve uma parte 2?”, e eu te respondo: Perl possui mais estruturas condicionais que apenas if e else. Uma dessas estruturas é a unless.

Veja por exemplo o comando unless. O comando unless é uma estrutura condicional parecida com o comando if, mas com a lógica invertida. Ele é usado para testar uma condição e, se ela for falsa, o código dentro do bloco unless será executado. Por exemplo:

unless (0) {
    print "Entrou dentro do unless\n";
}

Lembrando que o número zero é interpretado por muitas linguagens, inclusive Perl, como falso, e o número um como verdadeiro. Nesse caso, como a condicional tem valor falso, o código de dentro do bloco será executado.

Vamos fazer um exemplo simples: transformar o exemplo do tutorial anterior em um exemplo do uso de unless. Comecemos relembrando o exemplo dado, que é um código de um programa para ver se uma pessoa pode comprar cigarros ou álcool baseado em sua idade:

print "Digite sua idade:\n";
chomp($idade = <STDIN>);

if ($idade >= 18) {
    print "Compra autorizada\n";
} else {
    print "Compra não autorizada\n";
}

Agora vamos alterar a ordem usando a condicional unless:

print "Digite sua idade:\n";
chomp($idade = <STDIN>);

unless ($idade < 18) {
    print "Compra não autorizada\n";
} else {
    print "Compra autorizada\n";
}

Como pode ver, a ordem dos fatores foi alterada sem que a funcionalidade do código fosse necessariamente alterada. Esse é basicamente o funcionamento de unless, e, embora não seja uma cláusula usual de ser encontrada em códigos, é bom conhecer mais essa estrutura condicional.

E aí, gostou? Conta mais pra mim nos comentários 😄😊

Adendo

O usuário @gwajnberg da Hive falou algo muito importante no tutorial passado que foi o uso de use strict; e use warnings; em seus códigos. Eu omiti esses elementos durante os exemplos, mas realmente é importante que sejam levados em consideração.

use strict no seu código, de forma resumida, fará que você seja obrigado a escrever o código usando um estilo mais específico de codificação, e acusará erro caso não o faça. Isso serve basicamente para evitar que erros comuns em tempo de execução possam acontecer.

Enquanto isso, o use warnings serve para basicamente mostrar possíveis erros de digitação, de sintaxe ou uso de alguma coisa que não existe. A principal diferença entre ambos é que o primeiro encerra o programa se tiver um erro e o segundo não.

Não vou entrar em muitos detalhes sobre o funcionamento de ambos porque se trata de detalhes que um iniciante absoluto dificilmente compreenderia, mas é importante mencionar que se trata de uma boa prática sempre usar essas duas ferramentas em seus códigos.

Para usar elas em seu código, é só colocar nas primeiras linhas antes do código em si iniciar:

use strict;
use warnings;

print "Digite sua idade:\n";
chomp($idade = <STDIN>);

unless ($idade < 18) {
    print "Compra não autorizada\n";
} else {
    print "Compra autorizada\n";
}

Se seu código ainda tiver uma hashbang no início, é só colocar depois dela:

#!/usr/bin/perl
use strict;
use warnings;

print "Digite sua idade:\n";
chomp($idade = <STDIN>);

unless ($idade < 18) {
    print "Compra não autorizada\n";
} else {
    print "Compra autorizada\n";
}

E é isso.

Exercícios

  1. Escreva um script Perl que verifica se um número que o usuário passar é par. Se for par, mostre “Esse número é par”, enquanto se for ímpar diga “este número é ímpar
  2. Pesquise sobre a função length e escreva um programa que retorne a mensagem “Palavra curta demais” caso uma palavra retornada tenha menos de cinco letras
  3. Pegue seus códigos anteriores e adicione use strict e use warnings. Apareceu algum erro? Como você fez para resolver?

How do you rate this article?

2



Lingy
Lingy

My personal blog about technology

Publish0x

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.