Zmienne, typy zmiennych, komentarze, instrukcje wejścia/wyjścia

MZ | 10-06-2017 | 13:55:40

Zmienna to niejako "szufladka" w pamięci, w której przechowujemy dane określonego typu. Na przykład liczbę całkowitą, rzeczywistą, napis (łańcuch), lub wartość logiczną. Zmienną w C++ definiujemy używając następującego schematu: typ_zmiennej nazwa; Na przykład możemy zapisać coś takiego: int liczba;

Taki zapis to informacja dla kompilatora: zarezerwuj w pamięci miejsce o nazwie "liczba", gdzie będzie przechowywana liczba całkowita. Od tego momentu wszędzie gdzie kompilator napotka słowo "liczba", będzie w domyśle pracował na tym obszarze pamięci. Poznajmy teraz typy zmiennych wbudowane w C++.

  • int 4 bajty, zakres: -2147483648 .. 2147483647
  • unsigned int 4 bajty, zakres: 0 .. 4294967295
  • long 4 bajty, zakres: -2147483648 .. 2147483647
  • unsigned long 4 bajty, zakres: 0 .. 4294967295
  • long long 8 bajtów, zakres: -9223372036854775808 .. 9223372036854775807
  • unsigned long long 8 bajtów, zakres: 0 .. 18446744073709551615
  • float 4 bajty, zakres: 3.4e +/- 38
  • double 8 bajtów, zakres: 1.7e +/- 308
  • long double 8 bajtów, zakres: 1.7e +/- 308
  • bool 1 bajt, true / false
  • char 1 bajt, zakres: -128 .. 127
  • unsigned char 1 bajt, zakres: 0 .. 255
  • short 2 bajty, zakres: -32768 .. 32767
  • unsigned short 2 bajty, zakres: 0 .. 65535

Zapis naukowy liczb

A cóż to za dziwny, matematyczny zapis wielkich liczb znalazł się na liście powyżej? Mowa o zapisie z użyciem litery e? Otóż jest to tzw. zapis naukowy, w którym e oznacza exponent, czyli wykładnik. I stąd e+ oznacza przesunięcie przecinka o zadaną liczbę miejsc w prawo... zaś e- oznacza przesunięcie go o zadaną liczbę miejsc w lewo. I tak na przykład 2.3e+2 to inaczej liczba 230, zaś 2.3e-3 to inaczej 0.0023. Proste, prawda?

Słowo kluczowe unsigned

Przy niektórych typach zmiennych zauważamy także obecność słowa kluczowego unsigned co oznacza z angielskiego "bez znaku". W praktyce chodzi o to, iż całą dostępną pamięć (wyrażoną w bajtach) przeznaczamy na zapis liczby dodatniej. Weźmy na przykład zmienną typu char, zajmującą w pamięci komputera 1 bajt, czyli osiem bitów. Na ośmiu bitach możemy zapisać maksymalnie 256 liczb (od 0 do 255). Standardowo jednak cały zakres dzielimy na pół, aby móc obsłużyć liczby ujemne - i stąd ostateczny zakres typu char to -128..127 (na końcu jest 127, a nie 128 gdyż jeden slot zużyliśmy dla wartości zero). Dopisanie słowa kluczowego unsigned powoduje porzucenie wartości ujemnych, po to aby cały zakres 1 bajta można było przeznaczyć na wartości 0..255.

Zasięg (widoczność) zmiennych

W naszych pierwszych aplikacjach, tworzyć będziemy każdą zmienną jako tzw. zmienną globalną, to znaczy widzianą w całym programie. Zatem deklaracje zmiennych umieszczać będziemy pomiędzy using namespace std; a rozpoczęciem funkcji głównej int main(). Gdyby zmienną zapisać wewnątrz klamer jakiejś funkcji, to byłaby widoczna tylko pomiędzy tymi klamrami (tzw. zmienna lokalna). Póki co nie musisz sobie jeszcze zawracać głowy zasięgami widoczności zmiennych - bardzo wiele na ten temat zostanie powiedziane przy okazji tworzenia tzw. własnych funkcji. To wtedy zasięgi zmiennych rzeczywiście mają zastosowanie - nasze pierwsze programy posiadać będą tylko jedną funkcję główną int main() - miejsce deklaracji nie jest wówczas bardzo istotne.

#include <iostream>

using namespace std;

int liczba; //tutaj wstawimy zmienne globalne
string imie; //uzywane w pierwszych programach

int main()
{
cout << "Hello world!" << endl;

return 0;
}

W liniach z definicjami zmiennych użyto także na końcu tzw. komentarza – jest to tekst poprzedzony znakami: //. Komentarze są ignorowane przez kompilator – wstawiamy je tylko dla naszej informacji, aby wiedzieć co robi dana zmienna czy funkcja. Łatwiej wtedy wrócić do własnego kodu po upływie dłuższego czasu (własny kod szybko się zapomina - po pewnym czasie mamy autentyczne wrażenie, że napisał go ktoś inny). Edytor oznacza komentarze szarym kolorem, aby dodatkowo wizualnie podkreślić, iż nie biorą one udziału w wykonaniu programu.

Nadawanie wartości zmiennej

Przypisanie początkowej wartości do zmiennej to inaczej tzw. inicjalizacja (inicjować znaczy "wzbudzać", "rozpoczynać", "czynić pełnowartościowym"). Zmiennej możemy nadawać wartość już na etapie tworzenia:

string imie="Jan";
int x = 67; // x to liczba cukierków
int y = 31; // y to liczba uczniow

lub wewnątrz funkcji main(), lecz po wcześniejszym zadeklarowaniu jej typu w sposób już nam znany. Uwaga! Każda definicja zmiennej jest jednocześnie deklaracją (ale nie odwrotnie).

#include <iostream>

using namespace std;

int liczba; //deklaracja
string imie="Robert"; //definicja

int main()
{
liczba = 42; //inicjalizacja (poprzedzona deklaracją)

return 0;
}

Instrukcje wejścia/wyjścia

W zmiennych przechowujemy dane wprowadzane przez użytkownika. Aby wczytać do zmiennej wartość podaną z klawiatury, używamy instrukcji wejścia/wyjścia. Na przykład aby pobrać imię użytkownika:

#include <iostream>

using namespace std;

string imie;

int main()
{
cout << endl << "Podaj imie: ";
cin >> imie;

cout << "Podano imie:" << imie;

return 0;
}

Analogicznie wczytujemy liczbę, wystarczy jedynie zmienić typ danych deklarowanej zmiennej na liczbowy.

Zobacz także

Daj się zaskoczyć! Poniżej wylosowałem dla Ciebie pięć wpisów z całego archiwum bloga:

Komentarze

Disqus
Facebook
Pasja informatyki