Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2014 mgr
Jerzy Wałaszek
|
Te same dane binarne można interpretować w różny sposób. Na przykład 4 bitową grupę o wartości 1100 da się zinterpretować jako:
Komputer musi "wiedzieć", którą interpretacje ma zastosować. Do tego celu
służą właśnie typy danych w języku C++. Informują one kompilator o tym, jak
ma interpretować określone dane. Podstawowe typy danych to:
int | 32 bitowa liczba całkowita ze znakiem w kodzie U2 | |
unsigned int | 32 bitowa liczba całkowita bez znaku w kodzie NBS | |
double | 64 bitowa liczba zmiennoprzecinkowa | |
char | 8 bitowa liczba traktowana jako kod znaku ASCII | |
bool | 8 bitowa liczba traktowana jako wartość logiczna |
Oprócz typów podstawowych istnieją również typy pochodne, ale tymi zajmiemy się w miarę potrzeb. Poniższy program pokazuje liczbę bajtów (komórek pamięci o pojemności 8 bitów), które zajmuje informacja określonego typu. Korzystamy w nim z operatora sizeof, który podaje tę liczbę.
Code::Blocks |
// Rozmiar podstawowych typów danych // Koło informatyczne // (C)2014 I LO w Tarnowie //---------------------------------- #include <iostream> using namespace std; int main() { cout << "Rozmiar w bajtach podstawowych typów danych\n" "===========================================\n\n"; cout << "int : " << sizeof(int) << endl << "unsigned int : " << sizeof(unsigned int) << endl << "double : " << sizeof(double) << endl << "char : " << sizeof(char) << endl << "bool : " << sizeof(bool) << endl << endl; return 0; } |
Typy danych służą do deklaracji zmiennych. Zmienna jest obiektem, który przechowuje dane w programie. Typ zmiennej określa sposób interpretacji tych danych. Przed pierwszym użyciem każda zmienna musi być zadeklarowana. Deklaracja zmiennej wygląda następująco:
Przykłady:
int a; // tworzymy zmienną o nazwie a, w której będziemy przechowywali liczby całkowite ze znakiem unsigned int b; // tworzymy zmienną o nazwie b, w której będziemy przechowywali liczby całkowite bez znaku double x,y,z; // tworzymy trzy zmienne, w których będą przechowywane liczby ułamkowe
Nazwy zmiennych (oraz, jak zobaczymy później, innych obiektów) w języku C++ muszą być tworzone według kilku reguł:
Po utworzeniu zmiennej zechcemy zwykle umieścić w niej jakieś dane. Do tego celu służy w języku C++ instrukcja przypisania, która wygląda następująco:
Komputer wylicza wartość wyrażenia i wynik umieszcza w zmiennej. W wyrażeniu można stosować nazwy zmiennych oraz różne operatory arytmetyczne i logiczne.
Code::Blocks |
// Zmienne // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a, b, c; // Tworzymy 3 zmienne a = 5; // Zmiennym nadajemy wartości początkowe b = 7; c = a * b; // Wyliczamy iloczyn a i b, wynik umieszczamy w c cout << a << " x " << b << " = " << c << endl; return 0; } |
Zmiennym można przypisywać wartości w czasie deklaracji (jednakże nie nadużywaj tego sposobu, ponieważ program może stracić na czytelności):
Code::Blocks |
// Zmienne // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int a = 5, b = 7, c = a * b; // Tworzymy 3 zmienne cout << a << " x " << b << " = " << c << endl; return 0; } |
Dane możemy odczytać z klawiatury za pomocą strumienia wejścia cin. Składnia jest następująca:
Poniższy program wykorzystuje dane zmiennoprzecinkowe typu double. Pozwalają one przetwarzać liczby ułamkowe. Gdy wprowadzasz liczbę ułamkową, to pamiętaj, że część całkowitą oddzielamy od części ułamkowej kropką, a nie przecinkiem.
Code::Blocks |
// Obliczanie obwodu i pola koła // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------------ #include <iostream> using namespace std; int main() { double pi = 3.14159265359; double r, obw, pole; cout << "Obwód i pole koła\n" "=================\n\n"; cout << "r = "; cin >> r; // Odczytujemy promień koła obw = 2 * pi * r; // Obliczamy obwód pole = pi * r * r; // Obliczamy pole cout << endl << "Obwód = " << obw << endl << "Pole = " << pole << endl << endl; return 0; } |
Przy przesyłaniu danych zmiennoprzecinkowych do strumienia cout stosuje się często tzw. manipulatory. Określają one sposób prezentacji danych przez strumień. Na przykład możemy sobie zażyczyć, aby liczby zmiennoprzecinkowe były wyświetlane z czterema miejscami po przecinku w polu o szerokości 10 znaków z dosunięciem do lewej krawędzi pola. Dzięki temu wydruki staną się bardziej czytelne dla użytkownika. Aby uzyskać te opcje, należy przesłać do strumienia cout tzw. manipulatory. Dostęp do manipulatorów uzyskamy przez dołączenie do programu pliku nagłówkowego iomanip. W programie użyjemy następujących manipulatorów:
fixed | – | liczby zmiennoprzecinkowe będą wyświetlane zawsze jako część całkowita, kropka dziesiętna i część ułamkowa. |
setprecision(n) | – | liczby przecinkowe będą wyświetlane z n cyframi ułamkowymi po przecinku |
setw(n) | – | następny element będzie wyświetlony w polu o szerokości n znaków |
Dwa pierwsze manipulatory, fixed i setprecision(), przesyłamy do strumienia cout raz na początku programu. Ustawiają one sposób wyświetlania przez strumień liczb zmiennoprzecinkowych. Manipulator setw() wpływa tylko na następujący po nim element przesyłany do strumienia. Prześledź poniższą modyfikację programu obliczającego obwód i pole koła:
Code::Blocks |
// Obliczanie obwodu i pola koła // Koło informatyczne // (C)2014 I LO w Tarnowie //------------------------------ #include <iostream> #include <iomanip> using namespace std; int main() { double pi = 3.14159265359; double r, obw, pole; cout << fixed << setprecision(4); cout << "Obwód i pole koła\n" "=================\n\n"; cout << "r = "; cin >> r; // Odczytujemy promień koła obw = 2 * pi * r; // Obliczamy obwód pole = pi * r * r; // Obliczamy pole cout << endl << "Obwód = " << setw(10) << obw << endl << "Pole = " << setw(10) << pole << endl << endl; return 0; } |
Inne manipulatory poznamy w miarę potrzeb.
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe