Zmienne
Zmienne są to takie komórki gdzie program trzyma swoje informacje. Programista je definiuje, nadaje im nazwę, a w kodzie źródłowym operuje nimi. Istnieje kilka rodzajów zmiennych:
Cztery typy podstawowe:
· int - zmienna przechowująca liczby całkowite
· char - zmienna przechowująca znaki (litery, itp.)
· float - zmienna przechowująca liczby rzeczywiste
· double - zmienna przechowująca liczby rzeczywiste
Można je jeszcze rozszerzać poprzez kwalifikatory:
· unsigned - zmienna przechowuje tylko wartości dodatnie
· signed - zmienna przechowuje wartości dodatniej ujemne
· short - zmienna ma długość przynajmniej 2 bajtów
· long - zmienna ma długość przynajmniej 4 bajtów
· const - wartości zmiennej nie można modyfikować, jest to stała
Definiując zmienną musimy podać jej typ i jej nazwę. Ewentualnie wartość początkową. Przy nadawaniu nazwy trzeba pamiętać że kompilator ma swoje nazwy zastrzeżone i nie wolno w ten sposób nazywać zmiennych! Są to słowa kluczowe:asm, auto, break, case, catch, char, class, const, continue, default, delete, do, double, else, enum, extern, float, for, friend, goto, if, inline, int, long, new, operator, private, protected, public, register, return, short, signed, sizeof, static, struct, switch, template, this, throw, try, typedef, union, unsigned, virtual, void, volatile, while
Jeżeli edytor wyróżni ci nazwę zmiennej to znaczy że jest ona niedozwolona. Kompilator rozróżnia małe i duże litery, i trzeba uważać bo zmienna Abc jest inną zmienną niż abc!!!Przykład definicji:int liczba=1; //zadeklarowano zmienną o nawie liczba i przypisano jej wartość 1można używać zmiennych zdefiniowanych w innym pliku (oczywiście dołączonym do kodu) instrukcją extern Np:extern int zmienna;Jednak to będzie ci potrzebne przy bardziej skomplikowanych programach.
const
Jeżeli zdefiniujemy zmienną i nadamy jej charakter const to w tedy nie możemy modyfikować jej wartości podczas wykonywania programu, i podczas definicji tej stałej musi być nadana wartość. Nadając takiej zmiennej często można się uchronić przed przypadkową zmianą wartości. Wartość stała potrzebna jest też do przy definiowaniu tablic.
Przypisywanie wartości.
Wartość zmiennej możemy przypisać na kilka sposobów. Albo podając jej wartość liczbową albo podając jej wartość innej zmiennej. W tym miejscu nie będziemy się zajmowali innymi sposobami. Ważny jest tutaj sposób zapisu liczb. Na przykład trzy poniższe zapisy są jak najbardziej poprawne ale nie są sobie równe:
int zmienna;zmienna = 16;zmienna = 016;zmienna = 0x16;
Wynika to ze sposobu w jakim kompilator rozpoznaje liczby w różnych systemach. Pierwszy zapis dotyczy systemu liczb dziesiętnych, drógi zapis dotyczy systemu liczb ósemkowych, a trzeci dotyczy systemu liczb szesnastkowych. Często piszecie do mnie że coś nie działa gdy wpisujecie mniej więcej taki kod:
zmienna = 12h;
I nie mam prawa działać. Jest to typowy zapis dla assemblera ale nie w języku C++. Nawet w wstawkach asm obowiązuje zapis taki jak w C++.
Często też spotykam się u was z takim problemem. Chcę przypisać do zmiennej typu char znak tekstowy ale nie pamiętam jego kodu ASCII, natomiast nie działa taki zapis:
char zmienna = "A";
Taki zapis byłby poprawny gdyby zmienna była wskaźnikiem:
char *zmienna = "A";
No ale my nie chcemy wskaźnika tylko zwykłą zmienną. W takim wypadku trzeba zastosować nie cydzysłowia tylko znak '. To ten klawisz gdzie jest cudzysłów tylko bez shift'a.
char zmienna='A';
I teraz zmiennej przypisaliśmy wartość ASCII litery A
Zasięg zmiennej
Zanim zaczniesz analizować ten tekst zapoznaj się z definicjami funkcji, i z pętlami. Każda zmienna ma określony zasięg, czyli nie wszędzie jest ona dostępna.Największy zasięg ma zmienna która jest zdefiniowana na samym początku pliku przed definicją funkcji. Jak wiesz przy kod składa się z bloków oznaczanych takimi nawiasami: {} W jednym bloku może się znajdować blok, w którym znajduje się blok, w którym ... Innymi słowy, jeżeli zmienna została zdefiniowana w którymś tam z kolei bloku, to nie można jej używać w instrukcjach które nie należą do tego bloku.Przykład:
void main()
{ //blok 1
int zmienna1;
for(zmienna1=1 ; zmienna1<10 ;)
{// blok 2
int zmienna2=1
zmienna1++; // tu można użyć tych zmiennych
zmienna2=zmienna1;
}
zmienna1=zmienna2; //błąd zmienna2 nie ma w tym miejscu zasięgu
W przykładzie blok 2 należy do bloku 1 ale nie na odwrót!!! Jest to ta sama zasada co zawieranie się zbiorów w matematyce.Myślę że za pomocą tego przykładu udało ci się to zrozumieć. Po prostu poza klamrami gdzie zmienna została zdefiniowana, nie można jej używać.
Stałe
Stałe są to wartości których nie możemy zmienić podczas działania programu. Możemy nią operować tak jak zmienną ale możemy tylko z niej odczytywać wartość. Jeżeli spróbujemy coś do niej zapisać jeszcze kompilator przekaże nam błąd. Definiuje się stałą tak samo jak zmienną z tym że musimy podać wartość początkową. Np:
const int stala1=10;
const char stala2='d';
const int stala3[]={1,5,3,8};
Stałe są potrzebne do definicji tablic, ale o tym później.
signed i unsigned
Tymi kwantyfikatorami ustalamy czy nasza zmienna będzie przybierała wartości ujemne czy też nie. Jeżeli nie wystąpi żaden z tych kwantyfikatorów to kompilator zakłada domyślnie żę zmienna jest typu signed, czyli posiada wartości ujemne. Przypatrz się na poniższą tabelę i porównaj takie same typy gdzie występuje kwantyfikator unsigned i tam gdzie go niema.
void
Jest to typ danych. Nie jest on zdefiniowany. Możemy do niego zapisywać wartości, ale musimy najpierw określić rozmiar, i przydzielić pamięć. Wykorzystuje się ten typ danych przy funkcjach, jeżeli funkcja nie musi zwracać wartości.
Rozmiary i zakresy wartości podstawowych zmiennych w Borland C++
Nazwa typu
Rozmiar w bajtach
Zakres wartości
char
1
-128 ÷127
int
24 w trybie 32 bit
-32768 ÷ 32767-2147483648 ÷ 2147483647
short
2
-32768 ÷ 32767
long
4
-2147483648 ÷ 2147483647
unsigned char
0 ÷ 255
unsigned
0 ÷ 655350 ÷ 4294967295
unsigned short
0 ÷ 65535
unsigned long
0 ÷ 4294967295
enum
float
1,2E-38 ÷ 3,4E+38dokładność 7 cyfr
double
8
2,2E-308 ÷ 1,8E+308dokładność 15 cyfr
long double
10
3,4E-4932 ÷ 1,2E+4932dokładność 19 cyfr
Operatory są to znaki które nakazują programowi dodać, przypisać wartości zmiennych, porównać ich wartość i inne rzeczy. Istnieje coś takiego jak pierwszeństwo operatorów. Jest to dokładnie to samo co w matematyce. Wiemy że 4*4+4=20 a nie 32.. Chodzi tu o to że najpierw wykonywane jest mnożenie a potem dodawanie a nie na odwrót. Jeżeli chcielibyśmy zrobić to na odwrót stosujemy nawiasy. Np: 4*(4+4) i w tedy mamy wynik 32. Dokładnie tak samo robimy w C++.Listę operatorów przedstawiam poniżej. U samej góry są operatory z największym pierwszeństwem a na dole z najmniejszym.
Operatory i ich pierwszeństwo
Operator
Operacja
opis
::::
zasięg globalny (jednoargumentowy)zasięg klasy (dwuargumentowy)
ManiekQniszyk