SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
14.11.2024

Lição: 026: Estruturas de Controle: If-Else em Solidity

Nesta aula, vamos explorar a estrutura de controle if-else em Solidity, que é fundamental para implementar tomadas de decisão em contratos inteligentes. Estruturas de controle permitem que o contrato execute diferentes ações com base nas condições fornecidas.

Compreendendo If-Else

A instrução if-else permite a execução de código com base na avaliação de uma expressão booleana. Se a condição na instrução if for avaliada como verdadeira, o bloco de código correspondente será executado. Se for falsa, o código no bloco else (se fornecido) será executado em seu lugar.

Sintaxe

if (condicao) {
    // Código a ser executado se a condição for verdadeira
} else {
    // Código a ser executado se a condição for falsa
}

Exemplo Básico

Vamos olhar para um exemplo básico onde criamos um simples contrato de votação que inclui uma estrutura de controle if-else.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Votacao {
    mapping(address => bool) public eleitores;
    uint public totalVotos;

    function votar() public {
        // Verificar se o remetente já votou
        if (eleitores[msg.sender]) {
            // Se já votou, reverter a transação
            revert("Você já votou!");
        } else {
            // Se não votou, registrar seu voto
            eleitores[msg.sender] = true;
            totalVotos++;
        }
    }
}

Neste exemplo, a função votar verifica se o remetente já votou usando uma condição if. Se o remetente já tiver votado (eleitores[msg.sender] é verdadeiro), a transação será revertida com uma mensagem de erro. Se ainda não votou, será marcado como tendo votado e o totalVotos será incrementado.

Exemplo Ampliado

Agora, vamos aprimorar este exemplo para incluir mais funcionalidade com o uso de if-else.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Votacao {
    mapping(address => bool) public eleitores;
    uint public totalVotos;
    string public resultado;

    function votar(bool _votoParaCandidatoA) public {
        // Verificar se o remetente já votou
        if (eleitores[msg.sender]) {
            revert("Você já votou!");
        } else {
            // Registrar o voto
            eleitores[msg.sender] = true;
            totalVotos++;

            // Se o voto for para o Candidato A
            if (_votoParaCandidatoA) {
                resultado = "Votou no Candidato A";
            } else {
                // Caso contrário, o voto é para o Candidato B
                resultado = "Votou no Candidato B";
            }
        }
    }
}

Neste exemplo ampliado, a função votar agora aceita um parâmetro _votoParaCandidatoA. A estrutura if-else determina se o voto é para o Candidato A ou para o Candidato B e atualiza a variável de estado resultado de acordo.

Conclusão

A estrutura de controle if-else é um recurso poderoso em Solidity que permite aos desenvolvedores criar lógicas complexas de tomada de decisão em contratos inteligentes. Ao utilizar esta estrutura de controle, podemos gerenciar efetivamente diferentes cenários, como votação, lances em leilões ou qualquer outra lógica condicional necessária em um ambiente descentralizado.

À medida que você continua a aprender Solidity, praticar com estruturas de controle como if-else será crucial para construir aplicações descentralizadas (dApps) robustas.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!