Karakteres változók



Programozás során sokszor előfordul, hogy egyetlen gombnyomással (egyetlen karakterrel) kell
egy-egy funkciót elindítani, végrehajtani. Egy karakter tárolására hozták létre a char változót.

A char 8bit-en (1byte) tárolja el az adott karaktert. A karakter beazonosítása az ASCII-táblázat szerint történik, 0-tól 127-ig van az alap karakterkészlet (számok, kisbetűk, nagybetűk, néhány szövegformázó utasítás), 128-tól 255-ig tart a különleges karakterek tartománya.

ASCII-táblázat:

DEC Character
Value

0 null
1
2
3
4
5
6
7
8
9 tab
10 line feed
11
12
13 carriage return
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31


DEC Character
Value

32 space
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?


DEC Character
Value

64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _


DEC Character
Value

96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
127

Kétféleképpen lehet karaktert tárolni a char változónkban: egyik mód amikor az adott karaktert
tároljuk el pl.: char kar = 'A' ezt mindig aposztróf jelek közé kell tenni. A másik mód, hogy a karakter ASCII kódját tároljuk pl.: char kar = 65 ekkor az ASCII táblázat szerinti 65 kódú(A) karaktert tároltuk el a változónkban.

Nézzünk egy rövid programot:

char karakter;
void setup(){
Serial.begin(9600);
}
void loop(){
// ascII 33-tól kezdi a kiíratást, innentől tartalmaz karaktereket a kód
for(int i=33;i<255;i++){
karakter = i;
Serial.print(i);
Serial.print(" ");
Serial.println(karakter);
delay(500);
}

//ugyan az mint az első esetben csak itt char változóval működtetjük a for ciklust
for(char kar=' ';kar<'z'; kar++){
Serial.println(kar);
delay(500);
}
}

Vizsgáljuk meg egy kicsit ezt a sort: for(char kar=' ';kar<'z'; kar++){
mint látjuk char változóval is üzemelhet egy for ciklus (vagy bármilyen más kifejezésekkel operáló
utasítás sor). Az értékadás aposztrófok között történik: kar = ' ' , vagy számokkal kar = 49. A char értéke mindig összehasonlítható a relációs jelek segítségével más értékekkel: kar<'z' , kar<99.
 Az értéknövelés ugyan úgy történik mint az egész változóknál: kar++, kar-- .

KARAKTER TÖMBÖK
Most nézzük meg a karakter tömbök használatát. Először is általánosan beszéljünk egy kicsit a
tömbökről, a tömbök egy-egy változó több értékét tárolják el (amolyan halmazként), minden értékhez hozzá rendelődik egy sorszám (index) ami segítségével elő tudjuk hívni a megfelelő értéket a tömbünkből, pl.:

int tomb[ ] = {1,2,3,4,5}; // egy int tömb létrehozása és feltöltése értékekkel

int elem = tomb[4]; // tömb ötödik elemét (0-4) hozzárendeljük egy változóhoz

Serial.print(tomb[0]);// kiíratjuk a tömb első elemét

Ugyan ez karakterekkel:

char kar[ ] = ”android”;// char tömb létrehozása és feltöltése

char karakter = kar[6];// tömb hetedik elemét hozzárendeljük a karakter változóhoz (d)

egy egyszerű program:

char kar_tomb[ ] = "tomb kezeles";
void setup(){
Serial.begin(9600);
}

void loop(){
for (int i=0;i<12;i++){
Serial.print(kar_tomb[i]);
delay(100);
}
Serial.println();
}

Kiíratjuk a tömb összes elemét feltöltési sorrendben. Most ugyan ezt fordítva , cseréljük ki a for sort
a következőre: for (int i=11;i>-1;i--){

Most visszafelé íratjuk ki ugyan ezt a karakterláncot, lényeg ebben az, hogy a legtöbb szövegkezelési problémát a char tömbökkel és a szövegfeldolgozó utasításokkal meg tudjuk oldani.


char kar_tomb[ ] = "tomb kezeles";
int szamlalo = 0;
void setup(){
Serial.begin(9600);
for (int i = 0;i<12;i++){
if (kar_tomb[i]=='e')
szamlalo++;
}
Serial.print("A szoveg ");
Serial.print(szamlalo);
Serial.println(" db e-betut tartalmaz");
}
void loop(){
}

Utolsó példaprogrammal megszámoltatjuk az adott szövegben lévő e-betűket. A programkód azért
került a setup részben mert így csak egyszer fut le.

Folyt. Köv.