Hrvatsko društvo za robotiku - Uvod u robotiku - vježbe

Istina ili laž

Cilj

Cilj vježbe je naučiti što su to "logički izrazi", koji će nam pomoći da narednim vježbama koristimo odluke (grananja) u programu.

Logički izraz

void RobotLine::loop() {
	print("%i", 1 < 2);
	end();
}
Logički izraz je nešto što je istina ili laž. U primjeru lijevo je to 1 < 2, izraz koji je istinit.

Primjera ima raznih:
  • 7 = 15 (laž),
  • 1 < a i a < 15 (istinitost ovisi o nepoznanici "a"),
  • nije 3 = 3 (laž).
Naš program koristi "print" funkciju. Pogledajmo objašnjenje.

×
"%i" je mjesto na kojem će se ispisati cijeli broj, kako smo napisali u prethodnoj vježbi. Zapravo to nije bila cijela istina jer će nam isto slovo poslužiti i za ispis logičkih izraza, s tim da će rezultat biti "0", ako je izraz lažan i "1" ako je istinit.

Pokrenimo naš program, utipkajmo "loo" (1) i pogledajmo rezultat (2).

Dobili smo "1", kako i treba.

Ispis logičkih izraza na ovaj način nije osobito koristan, no to je još jedan element koji će nam trebati za izradu osnovnih programa za upravljanje robotom.

Jednakost

×
C++ će nas naučiti da matematički znakovi nisu univerzalni. Sigurno znate što znači "=". Nažalost, u C++ to nije tako. Napišete li "3 = 3", to neće biti logički izraz koji je istinit, nego će to biti greška.

C++ koristi " == " umjesto "=". Ako želimo napisati gornji izraz korektno, onda će to biti "3 == 3".

Zapamtite ovu anomaliju. Ma koliko se trudili, napravit ćete nebrojeno greška. Svi naprave. Odluka da C i C++ programi koriste "==" je jednostavno bila loša.

"<=" i ">=" operatori nisu nespretni i jasno je što znače.

Logički operatori

void RobotLine::loop() {
	if (2 > 1 || 2 > 7)
		...
}
Razmotrimo izjave:
  • "2 je veće od 1 ili je 2 veće od 7",
  • "Zemlja je okrugla ili je Zemlja ravna ploča",
  • "3 je jednako 3 ili je 5 jednako 5".
U logičkom smislu je istinitost "ili" izraza "istina", ako je bar jedna od dvije tvrdnje istinita. Istinitost bi bila "laž", samo u slučaju kad su obadvije tvrdne "laž", kao npr. "Zemlja je ravna ploča ili ptice ne postoje". U C++ notaciji "ili" se piše "||". Na taj način prvu tvrdnju možemo napisati kao što je u kodu lijevo. Kasnije ćemo vidjeti kako se operatori koriste u kodu.

Zadatak: ispis logičkog izraza

Provjerite shvaća li C++ da je nula jednaka nuli. Matematički formulirano, "0 = 0". Ispišite "1", ako je istina, "0", ako je laž.

Primjedbe



Projekt "Uvod u robotiku" sufinanciran je iz Europskog socijalnog fonda, poziv "Jačanje kapaciteta organizacija civilnoga društva za popularizaciju STEM-a". Relevantne stranice: Sadržaj vježbe za virtualne radionice isključiva je odgovornost Hrvatskog društva za robotiku.