понедељак, 14. септембар 2015.

Promenjive i konstante u C++ programskom jeziku


Promenjiva – variable je lokacija u memoriji računara na kojoj čuvate određenu vrednost i iz koje možete da menjate ili preuzmete vrednost. Jednostavno memoriju računara zamislite kao niz memorijski lokacija. Memorijske lokacije su numerisane i njih nazivamo memorijske adrese. Jedna promenjiva rezerviše jednu ili više memorijski lokacija u kojoj će se čuvati neka vrednost. Sve vaše promenjive se kreiraju u RAM – Random Access Memory; memoriji. Kad vi promenjivoj zadate ime promenjive, vi ne morate znati stvarnu memorijsku adresu promenjive. Vi promenjivoj pristupate preko njenog imena i njena memorijska adresa ostaje ista tokom trajanja promenjive. Ali ukoliko bi ste pokrenuli vaš program i ugasili ga, zatim ga ponovo pokrenuli; vaša promenjiva bi imala drugu memorijsku adresu. Promenjive koristimo da uzmemo podatke od korisnika ili sami možemo definisati njihove vrednosti u kodu. Da bi ste napravili i koristili neku promenjivu vi je prvo morate deklarisati. Iako računar tretira sve promenjive i čuva ih kao brojeve, programeri promenjive dele  prema potrebama u 3 osnovna formata.


( C++ Datatypes )
  
Promenjive delimo pre svega na formate, celi broj – Integer, broj sa pokretnim zarezom – Floating Point i tekstualni string – Text String. Pored osnovnih formata promenjivi; postoje i mnoštvo tipova promenjivi koji su u principu izvedeni od već navedenih formata. Svaki format promenjivi ima više tipova promenjivi. Vi čak možete definisati i praviti svoje vlastite tipove promenjivi, iako za tim nećete imati potrebe. Najvažnije je da shvatite da svaka vrednost ima prvo svoj format, zatim i svoj tip promenjive. Npr. decimalne brojeve ćete stavljati u promenjivu formata Floating Point, u tip podataka Float ili Double dok ćete tekst stavljati u format promenjivih String. Međutim vaš računar će prevesti svaku vašu promenjivu i čuvati kao binarni broj bez obzira koji ćete format i tip podataka koristiti. Osnovni tipovi u C++ programskom jeziku su:

char                                                     1 bajt            256 znakova

unsigned short int                              2 bajta         od 0 do 65 535

short int                                              2 bajta         od – 32 768 do 32 767

unsigned int (16 bitova)                    2 bajta         od 0 do 65 535

unsigned int (32 bitova)                    4 bajta         od 0 do 4 294 967 295

int (16 bitova)                                     2 bajta         od – 32 768 do 32 767

int (32 bita)                                         4 bajta         od – 2 147 483 648 do 2 147 647

unsigned long int                               4 bajta          od 0 do 4 294 967 295

long int                                               4 bajta          od – 2 147 483 648 do 2 147 483 647

float                                                    4 bajta          od 1,2e-38 do 3,4e38

double                                                8 bajtova      od  2,2e-308 do 1,8e308

Imajte u vidu da ove vrednosti na vašem računaru mogu da variraju u zavisnosti od vašeg računara i kompajlera. Da bi ste napravili i koristili promenjivu prvo je potrebno da je deklarišete.

Kako da deklarišem neku promenjivu?


Kad kažemo da deklarišemo neku promenjivu to znači da rezervišemo memoriju za vrednost koju hoćemo da dodelimo promenjivoj. Promenjiva se deklariše navodeći prvo tip promenjive, zatim ime promenjive. Npr.

int brojRadnihDana;

Vi možete dodeliti i vrednost vašoj promenjivoj prilikom deklarisanja iste koristeći operator dodeljivanja „ = “:

int brojRadnihDana = 26;

Vi možete kreirati i više promenjivih u istom redu ukoliko ih odvojite zarezom:

int brojRadnihDana, brojRadnihSati; 

Prilikom naziva vaših promenjivi, obratite pažnju da je C++ Case Sensitive programski jezik. To znači da C++ programski jezik razlikuje mala i velika slova. Jednostavno brojradnihdana i brojRadnihDana nisu iste promenjive. Drugo ne možete da nazivate imena vaših promenjivi tako što će početi brojem; 2brojRadnihDana. Naziv promenjivih ne može sadržavati praznine ili specijalne simbole i ne možete koristiti ključne reči C++ jezika, poput int, do, case, while itd.

Kako da kreiram svoj tip podataka?

Vi u suštini u C++ jeziku ne kreirate svoj tip podataka, već više pseudonimom na tip podatka, strukturu, klasu, objekat itd. Npr. ako često deklarišete vašu promenjivu unsigned long int; vi ćete sa službenom reči typedef definisati vašu promenjivu koja će vam skratiti kucanje. Npr.

typedef unsigned long int MYLNG;

onda možete deklarisati vašu promenjivu umesto unsigned long int ovako:

MYLNG brojRadnihSati;

Kad ćete koristiti tip podataka short a kad int ili neki drugi tip podataka zavisi od veličine broja koja promenjiva treba da čuva. Npr. Ukoliko obračunavate radne dane u mesecu i sigurni ste da broj dana nikad neće prelaziti 31 dan, onda treba da koristite unsigned char ( od 0 do 255 ) pre nego int ( od – 2 147 483 648 do 2 147 647 ).

Šta su konstante?

Konstante su vam isto što i promenjive samo što u njima držite vrednosti koje nećete menjati. Konstante ne možete menjati, jedino ako prepravljate program. Tad su korisne jer onda prepravljate podatak na samo jednom mestu, inače bi ste morali izvrnuti čitav kod programa i prepravljati svugde gde se pojavljuje vrednost koju hoćete da promenite. Konstantu možete definisati na stari način i bez tipa podatka:

#define timA 24;

Međutim mnogo bolje je da konstante definišete sa ključnom rečju const:

const unsigned char timA = 24;

Postoje dve vrste konstanti. Dosledne i simboličke. Dosledne su vam kad ih definišete u kodu jer znate njihovu vrednost:

const double PI = 3.14159265359;

Simboličke nisu poznate sve do inicijalizacije:

const int radnici = radniciPoKomaniji * 4;

Simbolične konstante nisu praksa, kad imate potrebu za njima bolje koristiti promenjivu.

Kako ja da vidim kolike su maksimalne i minimalne vrednosti promenjivi u mom računaru?

Najbolje da napravite mali programčić i vidite sami. Otvorite Visual Studio 2015 ili IDE koji vi koristite za programiranje C++ programa, zatim ukucajte kod:



#include "stdafx.h"
#include <iostream>
#include <limits>
using namespace std;


int main()
{
               cout << endl << "              MINIMUM AND MAXIMUM VALUES OF NUMBER DATA TYPES" << endl;
               cout << "                             IN C++ PROGRAMMING LANGUAGE" << endl << endl;
               cout << "INTEGER DATA TYPES:" << endl << endl;

               cout << "Minimum bool type is " << (int)numeric_limits<bool>::min() << endl;
               cout << "Maximum bool type is " << (int)numeric_limits<bool>::max() << endl << endl;

               cout << "Minimum unsigned char type is " << (int)numeric_limits<unsigned char>::min() << endl;
               cout << "Maxmum unsigned char type is " << (int)numeric_limits<unsigned char>::max() << endl << endl;

               cout << "Minimum char type is " << (int)numeric_limits<char>::min() << endl;
               cout << "Maxmum char type is " << (int)numeric_limits<char>::max() << endl << endl;

               cout << "Minimum unsigned short type is " << (int)numeric_limits<unsigned short>::min() << endl;
               cout << "Maxmum unsigned short type is " << (int)numeric_limits<unsigned short>::max() << endl << endl;

               cout << "Minimum short type is " << (int)numeric_limits<short>::min() << endl;
               cout << "Maxmum short type is " << (int)numeric_limits<short>::max() << endl << endl;

               cout << "Minimum unsigned int type is " << (int)numeric_limits<unsigned int>::min() << endl;
               cout << "Maxmum unsigned int type is " << UINT_MAX << endl << endl;

               cout << "Minimum int type is " << (int)numeric_limits<int>::min() << endl;
               cout << "Maxmum int type is " << (int)numeric_limits<int>::max() << endl << endl;

               cout << "Minimum unsigned long type is " << (long)numeric_limits<unsigned long int>::min() << endl;
               cout << "Maxmum unsigned long type is " << ULONG_MAX << endl << endl;

               cout << "Minimum long is " << (long int)numeric_limits<long int>::min() << endl;
               cout << "Maxmum long is " << (long int)numeric_limits<long int>::max() << endl << endl;

               cout << "REAL FLOATING DATA TYPES:" << endl << endl;

               cout << "Minimum float type is " << (double)numeric_limits<float>::min() << endl;
               cout << "Maxmum float type is " << (double)numeric_limits<float>::max() << endl << endl;

               cout << "Minimum double is " << (double)numeric_limits<double>::min() << endl;
               cout << "Maxmum double is " << (double)numeric_limits<double>::max() << endl << endl;

               cout << "Minimum long double is " << (long double)numeric_limits<long double>::min() << endl;
               cout << "Maxmum long double is " << (long double)numeric_limits<long double>::max() << endl << endl;
              
               system ("PAUSE");
              return 0;

}

Kad pokrenete ovaj kod dobićete iste ili slične razultate:

        MINIMUM AND MAXIMUM VALUES OF NUMBER DATA TYPES

                IN C++ PROGRAMMING LANGUAGE



INTEGER DATA TYPES:



Minimum bool type is 0

Maximum bool type is 1



Minimum unsigned char type is 0

Maximum unsigned char type is 255



Minimum char type is -128

Maximum char type is 127



Minimum unsigned short type is 0

Maximum unsigned short type is 65535



Minimum short type is -32768

Maximum short type is 32767



Minimum unsigned int type is 0

Maximum unsigned int type is 4294967295



Minimum int type is -2147483648

Maximum int type is 2147483647



Minimum unsigned long type is 0

Maximum unsigned long type is 4294967295



Minimum long is -2147483648

Maximum long is 2147483647



REAL FLOATING DATA TYPES:



Minimum float type is 1.17549e-38

Maximum float type is 3.40282e+38



Minimum double is 2.22507e-308

Maximum double is 1.79769e+308



Minimum long double is 2.22507e-308

Maximum long double is 1.79769e+308



Press any key to continue . . .


Kako to sve izgleda možete pogledati i na video-u:


( C++ Tutorial - 2. Range Variables )

Ukoliko vas interesuje tipovi podataka u C programskom jeziku; pogledajte ovde.