Do sada smo naučili kako C++ radi sa brojevima koristeći tipove:

  • int
  • float
  • double

Ali programi ne rade samo sa brojevima.

Vrlo često moramo da radimo i sa:

  • slovima,
  • simbolima,
  • znakovima interpunkcije,
  • ciframa kao tekstualnim karakterima,
  • i specijalnim znakovima.

Za to u C++ jeziku koristimo tip:

char

U ovoj lekciji naučićemo:

  • šta je char,
  • kako se koristi,
  • razliku između karaktera i stringa,
  • kako računar čuva karaktere,
  • šta je ASCII tabela,
  • kako se karakteri pretvaraju u brojeve,
  • i koje greške početnici najčešće prave.

Šta je char?

char je skraćenica od:

character

što znači:

karakter / znak

Koristi se za čuvanje jednog pojedinačnog znaka.

To može biti:

  • slovo
  • cifra
  • simbol
  • specijalni znak

Primer:

char slovo = 'A';

Ovo znači:

napravi promenljivu tipa char i sačuvaj znak:

A

Još primera:

char ocena = '5';
char simbol = '#';
char znak = '?';
char pol = 'M';

Svaka promenljiva tipa char čuva samo jedan znak.

char nije string

Ovo je veoma važna razlika.

char čuva:

jedan znak

Primer:

char slovo = 'A';

Ali:

string ime = "Marko";

čuva više karaktera.

Dakle:

'A'

nije isto što i:

"A"

Razlika:

'A'

= jedan karakter (char)

"A"

= tekst / niz karaktera (string)

Navodnici kod char

Kod char koristimo:

jednostruke navodnike

Primer:

char znak = 'X';

Kod stringa koristimo:

dvostruke navodnike

Primer:

string tekst = "X";

Ako napišemo pogrešno:

char slovo = "A";

to je greška.

Ispravno:

char slovo = 'A';

Unos char vrednosti

Možemo koristiti cin.

Primer:

#include <iostream>
using namespace std;

int main() {
    char slovo;

    cout << "Unesi jedno slovo: ";
    cin >> slovo;

    cout << "Uneli ste: " << slovo;

    return 0;
}

Ako korisnik unese:

K

program ispisuje:

Uneli ste: K

Rad sa karakterima

Pošto je char podatak, možemo ga koristiti kao i druge promenljive.

Primer:

char ocena = 'A';

cout << ocena;

Rezultat:

A

Šta računar zapravo čuva?

Ovo je veoma zanimljiv deo.

Računar ne čuva karaktere direktno kao slova.

On čuva brojeve.

Na primer:

A

interno postaje:

65

Zašto?

Zbog sistema koji se zove:

ASCII tabela

Šta je ASCII tabela?

ASCII znači:

American Standard Code for Information Interchange

To je standard koji svakom karakteru dodeljuje broj.

Na primer:

A = 65
B = 66
C = 67

Mala slova:

a = 97
b = 98
c = 99

Cifre:

'0' = 48
'1' = 49
'2' = 50

Specijalni znakovi:

! = 33
# = 35
@ = 64

Računar zapravo radi sa tim brojevima.

Primer ASCII konverzije

Pogledajmo program:

#include <iostream>
using namespace std;

int main() {
    char slovo = 'A';

    cout << slovo << endl;
    cout << (int)slovo;

    return 0;
}

Rezultat:

A
65

Ovde:

(int)slovo

pretvara karakter u broj.

Karakter kao broj

Pošto je char zapravo broj u memoriji, možemo raditi i ovako:

char slovo = 65;
cout << slovo;

Rezultat:

A

Jer ASCII kod 65 predstavlja:

A

Primer:

char znak = 97;
cout << znak;

Rezultat:

a

Sledeći karakter

Pošto su karakteri numerički kodovi, možemo ih povećavati.

Primer:

char slovo = 'A';

slovo++;

cout << slovo;

Rezultat:

B

Zašto?

Jer:

A = 65
B = 66

Program povećava broj za 1.

Razlika između ‘5’ i 5

Ovo je klasična početnička zamka.

'5'

nije isto što i:

5

Razlika:

5

= broj

'5'

= karakter

ASCII vrednost:

'5' = 53

Primer:

char c = '5';
cout << (int)c;

Rezultat:

53

Poređenje karaktera

Možemo porediti karaktere.

Primer:

char slovo = 'A';

if (slovo == 'A') {
    cout << "Tacno";
}

Pošto se ASCII kodovi porede numerički, ovo radi normalno.

Velika i mala slova

ASCII razlikuje velika i mala slova.

Primer:

A = 65
a = 97

Znači:

'A' != 'a'

To su različiti karakteri.

Primer:

char x = 'A';
char y = 'a';

if (x == y) {
    cout << "Isto";
}
else {
    cout << "Razlicito";
}

Rezultat:

Razlicito

Korisni primeri sa char

Unos slova i provera

#include <iostream>
using namespace std;

int main() {
    char odgovor;

    cout << "Da li zelis nastavak? (D/N): ";
    cin >> odgovor;

    if (odgovor == 'D') {
        cout << "Nastavljamo";
    }

    return 0;
}

Provera cifre

char c = '7';

if (c >= '0' && c <= '9') {
    cout << "Ovo je cifra";
}

Ovo radi jer ASCII vrednosti cifara idu redom.

Mala u velika slova

Pošto je razlika u ASCII tabeli poznata, možemo menjati karaktere.

Primer:

char slovo = 'a';

slovo = slovo - 32;

cout << slovo;

Rezultat:

A

Kasnije ćemo učiti elegantnije metode.

Najčešće greške početnika

1. Korišćenje dvostrukih navodnika

Pogrešno:

char slovo = "A";

Ispravno:

char slovo = 'A';

2. Očekivanje da char čuva više karaktera

Pogrešno:

char ime = 'Marko';

char čuva samo jedan znak.

3. Mešanje broja i karaktera

Pogrešno razumevanje:

'5' == 5

Netačno.

4. Zaboravljanje razlike velikih i malih slova

'A'

nije isto što i:

'a'

5. Nerazumevanje ASCII konverzije

Početnici se često iznenade kada:

(int)'A'

daje:

65

Gde se char koristi?

Tip char koristi se za:

  • unos jednog znaka
  • menije
  • komande
  • rad sa tekstom
  • proveru karaktera
  • parser logiku
  • obradu tastature

Primer:

char izbor;

kod menija:

1
2
3
Q

Rezime

U ovoj lekciji naučili smo:

char

čuva jedan karakter

ASCII tabela

pretvara karaktere u numeričke kodove

Važne stvari:

  • char = jedan znak
  • koriste se jednostruki navodnici
  • karakteri imaju numeričke ASCII vrednosti
  • mogu se porediti i menjati

Razumevanje char tipa je veoma važno jer predstavlja osnovu rada sa tekstom.

U narednoj lekciji prelazimo na:

„bool tip i logičke vrednosti”

Mini test

  1. Šta čuva char?
    a) Ceo tekst
    b) Jedan karakter
    c) Decimalni broj
  2. Koji zapis je ispravan?
    a) "A"
    b) 'A'
  3. ASCII kod za A je?
    a) 97
    b) 65
    c) 48
  4. Da li su 'A' i 'a' isti?
    a) Da
    b) Ne
  5. Šta daje:
char c = 'A';
cout << (int)c;

a) A
b) 65

Zadaci za vežbu

  1. Napravi char promenljivu za jedno slovo.
  2. Unesi karakter preko tastature.
  3. Ispiši ASCII vrednost karaktera.
  4. Napravi program koji proverava da li je karakter cifra.
  5. Povećaj karakter za 1 i vidi rezultat.

Domaći zadatak

Napravi program koji:

  • traži unos jednog slova
  • prikazuje ASCII vrednost
  • prikazuje sledeći karakter
  • proverava da li je veliko ili malo slovo

Pristupačnost