On-line učionica

9. februara 2019.

Još jedan tip podataka i neki operatori

Filed under: C++,Programiranje — jelena100janovic @ 11:29 pm

Ovde ćemo da obradimo još jedan tip podataka, koji služi za računarsko beleženje slova i znakova. Posle toga ćemo pogledati kakve sve znakove programski jezik koristi kao znakove operacija nad različitim tipovima podataka. Na kraju ćete još malo crtati 🙂

Znakovi u računaru – char

Da bi prikazali znak u računaru, koristimo tip podataka char. Deklaracija se vrši potpuno isto kao i bilo koja druga:

char znak;

Ovo je idealan primer da objasnimo zašto je važno deklarisati promenljive. I slova, kao i brojevi se u računaru zapisuju kao nizovi nula i jedinica. Kod slova postoji sistem koji se naziva ASCII tabela (i njegovo proširenje UNICODE koji sadrži sve znakove svih svetskih jezika, ali se ređe koristi u programiranju), koji nam govori koje slovo odgovara kojem broju. Zato programski jezici mogu da rade sa slovima i drugim znakovima isto što i sa brojevima: nalaze prethodni, sledeći, porede i slično. Dakle, kada ne bi bilo deklaracije, za određeni podatak u memoriji računara ne bismo znali da li program treba da ga tretira kao ceo broj, broj sa zarezom, ili kao znak sa tastature.

Dodela vrednosti je takođe vrlo slična kao i kod drugih promenljivih:

slovo = ‘A’;

pri čemu se znakovi pišu između apostrofa, da se ne bi mešali sa menima promenljivih. Ovo iznad je potpuno isto kao kada bi napisali:

slovo = 65;

jer je veliko A 65. znak u ASCII tabeli znakova. Da uradimo jedan program da proverimo gornje tvrđenje:

Napisati program koji ispisuje malo i veliko slovo C i njihovu vrednost iz ASCII tabele.

Trebalo bi da dobijemo vrednost velikog C za 2 veću od velikog A (ABCD…). Da vidimo:

 

Sve je kao što smo predvideli 🙂

Operatori poređenja

Za poređenje vrednosti koristimo operatore poređenja: < (manje), > (veće), <= (manje ili jednako), >= (veće ili jednako), == (jednako), != (različito). Rezultat takve operacije je vrednost 0 (netačno) ili 1 (tačno). Evo primera kako se to koristi:

int odgovor, vrednost1, vrednost2;

odgovor = vrednost1 <= vrednost2;

Šta će se ovde dogoditi? Pa, u zavisnosti od vrednosti 1 i 2, odgovor će biti: 1, ako je vrednost1 manja ili jednaka vrednost2, odnosno 0 ako nije (tj. ako je veća). Dakle, operatori poređenja nam omogućavaju da postavimo pitanja u kodu.

Logički operatori

Da bi spojili dva uslova, koristimo logičke operatore: && (i), || (ili) i ! (ne). Znači, mogli bi da pitamo nešto ovako:

int odgovor, vrednost;

odgovor = (vrednost > 3) && (vrednost < 8);

Dakle, odgovor je 1, ako je vrednost između 3 i 8, a inače je 0. E pa, dobro. ALi čemu sva ta pitanja služe i mogu li se nekako koristiti?

Ternarni operator ? :

Svi dosadašnji operatori su bili binarni: znači da su nam trebale dve vrednosti da bismo ih poredili, odnosno dva pitanja da bismo ih kombinovali. Sada se srećemo sa operatorom kod koga nam trebaju tri vrednosti: prva je pitanje, a druge dve vrednosti koje treba da dobijemo u zavisnosti od odgovora na pitanje. Na primer:

int vrednost1, vrednost2, odgovor;

odgovor = vrednost1 > vrednost2;
cout << odgovor ? „jeste veca“ : „nije veca“;

Šta će se ovde dogoditi? Prvo, u promenljivoj odgovor ćemo imati odgovor na pitanje: „Da li je vrednost1 veća od vrednost2?“. A onda, u cout, u zavisnosti od tog odgovora, na ekran će se ispisati odgovor rečima „jeste veća“, ako jeste, ili „nije veća“, ako nije. Dobro, hajde malo da se vratimo crtanju…

Rezolucija

Šta je rezolucija ekrana? Dva broja koja određuju koliko piksela imamo po širini, a koliko po visini ekrana. Isto tako imamo i rezoluciju, odnosno veličinu nekog prozora. Ako pažljivije pogledamo kod osnovnog grafičkog programa u C++-u, primetićemo da nam piše rezolucija prozora koji se otvara (koju, naravno, možemo i menjati):

Dakle, u 47., odnosno 48. redu koda imamo te dve vrednosti. To nam olakšava crtanje, zar ne? Hajde da probate:

Domaći zadatak

  1. Napisati grafički program koji će na sredini prozora iscrtati tri podudarna kruga koji se dodiruju i pokrivaju celu visinu prozora.
  2. Napisati grafički program koji će iscrtati tri podudarna kruga koji će prekriti celu visinu i širinu prozora (ne smeju ni da se dodiruju, ni da se seku i ne sme postojati vertikalan ili horizontalan red piksela od kojih ni jedan nije iscrtan bar jednim krugom).
  3. Napisati program koji učitava malo slovo od korisnika, a ispisuje odgovarajuće veliko slovo.
Advertisements

Ostavite komentar »

Nema komentara.

RSS feed for comments on this post. TrackBack URI

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se /  Promeni )

Google photo

Komentarišet koristeći svoj Google nalog. Odjavite se /  Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se /  Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se /  Promeni )

Povezivanje sa %s

Create a free website or blog at WordPress.com.

%d bloggers like this: