Sąlyginis kodo vykdymas
Pamokos turinys
- Prisimenam praeitą pamoką
if
irelse
raktiniai žodžiai- Palyginimo operatoriai
- Galimas sąlygų aprašymas
- Sudėtinės sąlygos: loginis ir
&&
, loginis arba||
- Pritaikymo pavyzdžiai
Sąlyginis kodas
Sąlyginai vykdomas konstruojamas aprašant sąlygą: if(condition)
. condition
gali būti bet kas, įgyjantis bool
tipo 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
- Sukurti kintamuosius kėdžių ir moksleivių skaičiui. Parašyti komsolėje ar užtenka kėdžių
- Sukurti kintamuosius trijų produktų kainai ir turimam pinigų skaičiui. Parašyti konsolėje ar trūks pinigų, ar kokia galima graža
- Sukurti kintamuosius dviejų automobilių greičiams ir jų spalvoms. Parašyti konsolėje greitesnio automobilio greitį ir spalvą
- Sukurti kintamuosius dviejų žmonių ūgiui. Parašyti konsolėje kokio aukščio turi būti praėjimas (kad abu tilptų)
- Sukurti kintamuosius apskritimo padėčiai, spinduliai bei žaidėjo padėčiau. Parašyti konsolėje ar žaidėjas yra apskritime, koks atstumas nuo apskritimo krašto