w standardzie ASCII każdy znak jest kodowany na

Transkrypt

w standardzie ASCII każdy znak jest kodowany na
Znaki w pamięci komputera przechowywane są w postaci liczb całkowitych:
•
•
•
w standardzie ASCII każdy znak jest kodowany na 1 bajcie, jako liczba z zakresu <0,255>
w standardzie Unicode każdy znak jest kodowany na 2 bajtach, jako liczba z zakresu <0,65537>
w standardzie UTF-8 jest różnie: znaki alfabetu angielskiego i cyfry są na 1 bajcie, inne znaki
narodowe na 2 lub nawet więcej bajtach
ASCII - American Standard Code for Information Interchange – jest to standard zapisu znaków
w 7-bitowym kodzie. Liczbom z zakresu 0-127 przyporządkowano jednoznacznie: litery alfabetu
angielskiego, cyfry, znaki przestankowe i inne symbole oraz polecenia sterujące, np.: 65 - A, 32 – spacja,
8 - backspace.
Ósmy bit jest różnie wykorzystywany w różnych stronach kodowych. Kodom od 128 do 255 odpowiadają
znaki semigraficzne: cieniowanie , ramki ╩ ▀▄┌ ┐└ ┘ oraz znaki specjalne języka, np. ąęść.
Znaki w programowaniu
Do przechowywania znaków w kodzie programu C i C++ służą dwa typy zmiennych:
char – pojedynczy znak, każda zmienna zajmuje 1 bajt. Stałe znakowe ujmuje się w apostrofy: ‘a’
string – łańcuch znaków, czyli tekst (np. słowo, zdanie). Sałe tekstowe piszemy w cudzysłowach: ”aa”
Kod znaku:
(int)znak
– rzutuje znak na typ liczby całkowitej, zwraca kod znaku
Postać graficzna znaku o podanym kodzie:
(char)kod
– rzutuje liczbę na typ znakowy char, zwraca graficzną postać znaku o danym kodzie
Przykłady:
char znak=’@’;
// deklaruje zmienną typu char i przypisuje jej wartość
cout << (int) znak;
// wyświetla kod ASCII tego znaku
Program który wyświetla wszystkie znaki o kodach z zakresu od 0 do 255
for (int i=0; i<=255; i++) cout << i << ’\t’ << (char)i << endl;
Program który prosi o podanie znaku z klawiatury, pobiera go i wyświetla jego kod ASCII.
Powtarza to aż użytkownik poda znak ENTER (o kodzie równym 13)
char z;
while (z!=13) {
cout << "daj znak ";
z = getch();
cout << "znak " << z << " ma kod " << (int)z << endl;
}
Zwróć uwagę, typ char przechowuje 256 liczb, ale nie z zakresu <0,255>, lecz <-128, 127>.
Jeśli podasz znak z „polskim ogonkiem”: ą, ę, ń, ś itp., to program wyświetli kod jako liczbę ujemną. Gdy
dodasz do tego kodu liczbę 256, dopiero otrzymasz właściwy kod znaku.
Można od razu używać zakresu <0,255> deklarując typ unsigned char zamiast char.
Przykład łańcucha znaków:
string s = ”Basia”;
Zmienne typu string nie są zwykłymi zmiennymi prostymi, jak char, int, double, bool.
Są obiektami o złożonej strukturze i wielu wbudowanych funkcjach. Na przykład funkcja length()
zwraca liczbę znaków w stringu.
Przykład
cout << s.length();
// dla s=”Basia” zwróci liczbę 5
Znaki w stringu są indeksowane, począwszy od 0 (pierwszy znak ma indeks 0). Można odwołać się do
każdego, pojedynczego znaku w łańcuchu, podając indeks znaku w nawiasie kwadratowym.
Przykład
cout << s[2];
// zwróci trzeci znak tekstu s, dla s=”Basia” zwróci literę ‘s’
Program który pobiera z klawiatury słowo i wyświetla kody ASCII wszystkich kolejnych znaków w tym
słowie, oddzielając je spacją:
string s;
cout << "daj slowo ";
getline(cin,s);
int n = s.length();
cout << n << " znakow w slowie\n"
for (int i=0; i<n; i++) {
int kod = s[i];
if (kod<0) kod += 256;
cout << kod << " ";
}
cout << endl;
;
Program który zlicza ile razy w tekście wystapiła litera ‘a’
string s = "Programowanie zawsze zajmie wiecej czasu niz sie spodziewasz";
int licznik=0;
for (int i=0; i<n; i++)
if (s[i]=='a') licznik ++;
cout<<"znakow a jest "<<licza<<endl;
Zadanie
Napisz program który pobiera tekst z klawiatury i wyświetla go wspak, tzn. tekst czytany od ostatniego
znaku do pierwszego.

Podobne dokumenty