Budowa napisu
Ka¿dy napis -czyli zmienna typu string jest w pewien sposób zapisywana w pamiêci komputera. Sk³ada siê przewa¿nie z 256 bajtów. W Pascalu pierwszy z nich przechowuje d³ugo¶æ napisu, a reszta sam napis jako zbiór znaków typu 'char'.
Dla zmiennej o nazwie: 'napis' o warto¶ci 'Ala ma kota' wygl±da to tak:
Nr bajtu | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Co przechowuje | D³ugo¶æ napisu, czyli liczba 11 | A | l | a |
| m | a |
| k | o | t | a |
Programista ma dostêp do ka¿dej z tych liter za pomoc± odwo³ania takiego jak w tablicy. Gdy chce wy¶wietliæ pierwsz± literê w tej zmiennej, mo¿e napisaæ
WriteLn(napis[1]);
Gdyby napisaæ tzw. rzutowanie (zmianê typu: char na byte) elementu o indeksie 0
WriteLn(Byte(napis[0]));
Otrzymamy 11, czyli to samo, co gdyby¶my napisali:
WriteLn(Length(napis));
Gdyby¶my chcieli wiêc wy¶wietliæ ostatni± literê zmiennej napis, wystarczy napisaæ:
WriteLn(napis[Length(napis)]);
A dlaczego nie mo¿na wpisaæ WriteLn(napis[11]); ? To proste, mo¿emy, ale nie zawsze by to by³a ostatnia litera napisu, dlatego, bo zawarto¶æ zmiennej mo¿e przecie¿ byæ inna! Gdy piszemy programy, musz± byæ one zawsze elastyczne. Nie mog± dzia³aæ tylko dla jednego przez nas okre¶lonego za³o¿enia.
Jak zbadaæ ostatni± literê wczytanego z klawiatury imienia? Teraz jest to proste
ReadLn(napis);
WriteLn(napis[Length(napis)]);