Instrucțiuni condiționale — RexDac Academy

RexDac AcademyNote tehnice · Ajută să ai câteva noțiuni de bază
0%Note publicate citite · pe acest dispozitiv

Nivelul 2 — Controlul fluxului

Instrucțiuni condiționale

Note originale de SunDiaL · Vezi sursa în engleză

În lucru

Această notă este în curs de elaborare.

Așa îi spui calculatorului să ia decizii. Există 3 tipuri:

If

If înseamnă literalmente „dacă” din limbajul obișnuit. Dacă se întâmplă ceva, fă un lucru; altfel, fă altceva. Evident, răspunsul la întrebarea „s-a întâmplat ceva?” este da/nu, deci o valoare booleană. Dar o valoare booleană fixă nu este foarte utilă, motiv pentru care în 99% dintre cazuri un if este definit printr-o condiție (al cărei rezultat este boolean). Instrucțiunea if poate avea unul sau mai multe else if și un else pe care le poți adăuga, așa cum este ilustrat mai jos (observă că else trebuie să fie ultimul din lanț):

  1. If simplu
if(condition)
{
	//do something
}
  1. If cu else
if(condition)
{
	//do something
}
else
{
	//do something else
}
  1. If cu else if și else
if(condition)
{
	//do something
}
else if(someOtherCondition)
{
	//do something else
}
else if(yetAnotherCondition)
{
	//do something else
}
//more can be added
else
{
	//do something else
}

Switch

Switch este doar un alt mod de a scrie if. Este gândit pentru variabile și valori, nu pentru condiții. Uneori este mai ușor de citit/scris decât un if.

Observă folosirea cuvântului-cheie break. Acesta este un exemplu de supraîncărcare a unui cuvânt-cheie: un cuvânt folosit de obicei într-un context are alt rol într-un alt context. Aici, break este folosit în general pentru a opri bucle, dar în acest caz este folosit pentru a „opri un switch”. Din acest motiv te-ai putea gândi la switch ca la o „buclă executată o singură dată”... dar ar fi oarecum greșit, așa că nu o face.

Cel mai simplu switch

int x = 5;
switch(x)
{
	case 1:
	//do something when x == 1
	break;
	case 2:
	//do something when x == 2
	break;
	default:
	//do something when none of the above cases have been met
	break;
}

Este echivalent cu următorul if:

int x = 5;
if(x == 1)
{
	//do something when x == 1
}
else if(x == 2)
{
	//do something when x == 2
}
else
{
	//do something when none of the above cases have been met
}

Switch cu trecere la cazul următor

int x = 5;
switch(x)
{
	case 1:
	case 2:
		//do something when x == 1 || x == 2
		break;
	default:
		//do something when none of the above cases have been met
		break;
}

Este echivalent cu următorul if:

int x = 5;
if(x == 1 || x == 2)
{
	//do something when x == 1 || x == 2
}
else
{
	//do something when none of the above cases have been met
}

Switch cu tuplu

int x = 5;
int y = 25;
switch ((x,y))
{
	case (1, 2):
		//do something when x == 1 && y == 2
		break;
	default:
		//do something when none of the above cases have been met
		break;
}

Este echivalent cu următorul if:

int x = 5;
int y = 25;
if(x == 1 && y == 2)
{
	//do something when x == 1 && y == 2
}
else
{
	//do something when none of the above cases have been met
}

Expresii switch

TODO

Operatorul ternar

Operatorul ternar este un if scris pe o singură linie. După cum sugerează numele, este un operator și, deoarece operatorii returnează întotdeauna o valoare, operatorul ternar este folosit cel mai des în atribuiri. Structura sa este condition ? value when true : value when false. Exemplu:

int x = 5;
int y = x == 2 ? 10 : 15;

Se citește ca următorul if:

int x = 5;
int y;
if(x == 2)
{
	y = 10;
}
else
{
	y == 15;
}