Structures conditionnelles

30 min Niveau 3

Lors de l'écriture d'un programme, il peut arriver que vous deviez adopter un choix parmi un ensemble donné de chemins. Dans de tels cas, vous devez utiliser des instructions conditionnelles qui permettent à votre programme de prendre les bonnes décisions et d'effectuer les bonnes actions.

Solidity prend en charge les instructions conditionnelles qui sont utilisées pour effectuer différentes actions en fonction de différentes conditions.

L’instruction if

L'instruction if est l'instruction de contrôle fondamentale qui permet à Solidity de prendre des décisions et d'exécuter des instructions de manière conditionnelle.

Syntaxe

La syntaxe d'une instruction if de base est la suivante :

if (expression) {
    Statement(s) to be executed if expression is true
}

Ici, une expression Solidity est évaluée. Si la valeur résultante est vraie, la ou les instructions données sont exécutées. Si l'expression est fausse, aucune instruction ne sera exécutée. La plupart du temps, vous utiliserez des opérateurs de comparaison pour prendre des décisions.

Exemple

pragma solidity ^0.5.0;

contract SolidityTest {
    uint storedData; 
    constructor() public {
        storedData = 10;   
    }
    function getResult() public view returns(string memory){
        uint a = 1; 
        uint b = 2;
        uint result = a + b;
        return integerToString(result); 
    }
    function integerToString(uint _i) internal pure 
        returns (string memory) {
        if (_i == 0) {   // if statement
            return "0";
        }
        uint j = _i;
        uint len;

        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;

        while (_i != 0) {
            bstr[k--] = byte(uint8(48 + _i % 10));
            _i /= 10;
        }
        return string(bstr);//access local variable
    }
}

Rendu

0: string: 3

L’instruction if...else

L'instruction 'if...else' est la forme suivante d'instruction de contrôle qui permet à Solidity d'exécuter des instructions d'une manière plus contrôlée.

Syntaxe

if (expression) {
    Statement(s) to be executed if expression is true
} else {
    Statement(s) to be executed if expression is false
}

Ici, l'expression Solidity est évaluée. Si la valeur résultante est vraie, la ou les instructions données dans le bloc 'if' sont exécutées. Si l'expression est fausse, la ou les instructions du bloc else sont exécutées.

Exemple

pragma solidity ^0.5.0;

contract SolidityTest {
    uint storedData; 
    constructor() public{
        storedData = 10;   
    }
    function getResult() public view returns(string memory){
        uint a = 1; 
        uint b = 2;
        uint result
        if( a > b) {   // if else statement
            result = a;
        } else {
            result = b;
        }       
        return integerToString(result); 
    }
    function integerToString(uint _i) internal pure 
        returns (string memory) {
        if (_i == 0) {
            return "0";
        }
        uint j = _i;
        uint len;

        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;

        while (_i != 0) {
            bstr[k--] = byte(uint8(48 + _i % 10));
            _i /= 10;
        }
        return string(bstr);//access local variable
    }
}

Rendu

0: string: 2

L’instruction if...else if…

L'instruction if...else if... est une forme avancée de if...else qui permet à Solidity de prendre une décision correcte à partir de plusieurs conditions.

Syntaxe

La syntaxe d'une instruction if-else-if est la suivante :

if (expression 1) {
    Statement(s) to be executed if expression 1 is true
} else if (expression 2) {
    Statement(s) to be executed if expression 2 is true
} else if (expression 3) {
    Statement(s) to be executed if expression 3 is true
} else {
    Statement(s) to be executed if no expression is true
}

Il n'y a rien de spécial dans ce code. Il s'agit simplement d'une série d'instructions if, où chaque if fait partie de la clause else de l'instruction précédente. La ou les déclarations sont exécutées en fonction de la condition vraie, si aucune des conditions n'est vraie, alors le bloc else est exécuté.

Exemple

pragma solidity ^0.5.0;

contract SolidityTest {
    uint storedData; // State variable
    constructor() public {
        storedData = 10;   
    }
    function getResult() public view returns(string memory) {
        uint a = 1; 
        uint b = 2;
        uint c = 3;
        uint result

        if( a > b && a > c) {   // if else statement
            result = a;
        } else if( b > a && b > c ){
            result = b;
        } else {
            result = c;
        }       
        return integerToString(result); 
    }
    function integerToString(uint _i) internal pure 
        returns (string memory) {

        if (_i == 0) {
            return "0";
        }
        uint j = _i;
        uint len;

        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;

        while (_i != 0) {
            bstr[k--] = byte(uint8(48 + _i % 10));
            _i /= 10;
        }
        return string(bstr);//access local variable
    }
}

Rendu

0: string: 3
logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus