Sąlyginis kodo vykdymas

Pamokos turinys

Sąlyginis kodas

Sąlyginai vykdomas konstruojamas aprašant sąlygą: if(condition). condition gali būti bet kas, įgyjantis booltipo reikšmę (taip/ne true/false). Po sąlygos rašome kodą tarp forminių skliaustelių {code} kurį norime vykdyti tik kai ta sąlyga yra vertės.


// Vykdomas
Debug.Log("Test 0");

if (true)
{
    // Vykdomas
    Debug.Log("Test 1");
}

if (true)
{
    // Nevykdomas
    Debug.Log("Test 2");
}

bool condition = false;

if (condition)
{
    // Neykdomas
    Debug.Log("Test 3");
}

condition = true;

if (condition)
{
    // Vykdomas
    Debug.Log("Test 4");
}

if (3 > 4)
{
    // Neykdomas
    Debug.Log("Test 5");
}

if (4 * 2 == 8)
{
    // Vykdomas
    Debug.Log("Test 6");
}

/**
Bus atspausdinta console lange:
    Test 0
    Test 1
    Test 4
    Test 6
*/

Dažnai yra norima vykdyti kodą jeigu pradinė sąlyga nepasiteisino. Pavyzdžiui: jeigu turiu pinigų, perku saldainį, bet kitu atveju einu pas draugus šokolado. Norint vengti dar vienos eilutės su if ir atsikartojančia, bet priešinga sąlyga, galime naudoti raktinį žodelį else(kursi labai paprastai išsiverčia- o kitu atveju…).


int candies = 3;

if (candies > 1)
{
    Debug.Log("Valgau ir duodu draugui");
}
else
{
    if (candies == 1)
    {
        Debug.Log("Valgau kai draugas nemato");
    }
    else
    {
        Debug.Log("Klausiu ar draugas turi šokolado");
    }
}

Sudėtinęs sąlygos

Tarkim ateina mama:


bool paklotaLova = true;
bool sutvarkytasStalas = true;
bool padarytiNamuDarbai = true;
bool isnestosSiuksles = false;

if (paklotaLova && sutvarkytasStalas && padarytiNamuDarbai && isnestosSiuksles)
{
    Debug.Log("Labas");
}
else
{
    Debug.Log("Kokie netvarkingi namai, kas taip gyvena! Įsivaizduok kad ateina svečiai, ką kiti pagalvos!");
}
// me_irl

Arba važiuoji keliu:


float greitis = 48;
float promiles = 0.0f;
bool lights = true;
bool mobilusRankoje = true;

if (greitis > 50 || promiles > 0.3f || !lights || mobilusRankoje)
{
    Debug.Log("Viena žvaigždutė");
}
else
{
    Debug.Log("Nulis žvaigždučių");
}

Pritaikymo pavyzdžiai

Jonas nubėgo 4.6 kilometrus, o Tadas 3.8 kilometrus. Norima parašyti konsolėje, kuris nubėgo toliau ir kiek toliau:

using UnityEditor;
using UnityEngine;

public static class Test {
    [MenuItem("MyMenu/Pamoka3")]
    static void Pamoka2()
    {
        string name0 = "Jonas";
        string name1 = "Tadas";

        float distance0 = 4.6f;
        float distance1 = 3.8f;

        // Paprastas variantas
        if (distance0 > distance1)
        {
            Debug.Log(name0 + " nubėgo " + distance0 + " kilometrus, " + (distance0 - distance1) + " toliau nei " + name1);
        }
        else
        {
            Debug.Log(name1 + " nubėgo " + distance1 + " kilometrus, " + (distance1 - distance0) + " toliau nei " + name0);
        }

        // Norint vengti atsikartojančio kodo:
        string nameFaster;
        string nameSlower;
        float distanceFaster;
        float distanceDifference;
        
        if (distance0 > distance1)
        {
            nameFaster = name0;
            nameSlower = name1;
            distanceFaster = distance0;
            distanceDifference = distance0 - distance1;
        }
        else
        {
            nameFaster = name1;
            nameSlower = name0;
            distanceFaster = distance1;
            distanceDifference = distance1 - distance0;
        }

        Debug.Log(nameFaster + " nubėgo " + distanceFaster + " kilometrus, " + distanceDifference + " toliau nei " + nameSlower);
    }
}

Savarankiška užduotis