Programy pisane przez programistów (niezależnie od używanej technologii) pracują jak nie trudno się domyślić na danych.
Dane te znów z kolei są różnego typu i dziś powiemy sobie kilka słów na temat danych oraz ich typów.
Wyróżniamy dwa główne typy danych:
- wartościowe
- referencyjne
Zanim jednak zabierzemy się za deklarowanie danych w naszych programach, warto przez krótką chwilę przyjrzeć się różnicom pomiędzy nimi.
1. Zmienne
Komputery jak wiemy posiadają pamięć operacyjną, która jak również wiemy jest niestety hardware-owo ograniczona
– w mniejszym lub większym stopniu. Pisane przez programistów programy są wykonywane w tej pamięci.
Aby zawsze mieć odpowiednią ilość pamięci do wykonania naszego programu, w środowisku .NET zostało to w pewien sposób zorganizowane.
W organizacji tej występują takie terminy jak stos i sterta dla których obowiązują pewne obostrzenia; a mianowicie, stos to takie miejsce w pamięci komputera w którym przechowywane są dane typu wartościowego, zaś sterta to miejsce, gdzie przechowywane są dane typu referencyjnego.
Dane na stosie znajdują się w określonej kolejności, gdzie do dyspozycji mamy zawsze dostepne dane z samej góry stosu. Na stosie prócz danych wartościowych przechowywane są referencje (niejako adresy) do danych znajdujących się na stercie.
Stos w stosunku do sterty ma o wiele bardziej restrykcyjne ograniczenia co do pojemności, jednak alokacja pamięci na stosie jest
o wiele szybsza.
Sterta zaś pozwala na dynamiczne deklarowanie rozmiaru danych co odbywa się jednak kosztem czasu alokacji pamięci.
Pisząc program, programista ustala jakie dane mają znaleźć się na stosie oraz stercie w wolnej pamięci. Ustalanie to jednak odbywa się pośrednio poprzez wybór konkretnego typu danej.
Na stosie mogą znaleźć się tylko niektóre typy danych, o czym wspominałem wcześniej, a mianowicie dane typu wartościowego. Są to główne typy proste, tj. int czy double o których powiem więcej nieco później.
Na stercie zaś mogę znajdować się pozostałe dane, np. obiekty klas czy tablice o których mówimy, że mają typ referencyjny.
2. Deklaracja zmiennych
Zmienna w programowaniu określana jest przez cztery atrybuty:
- nazwa
- miejsce w pamięci
- wartość (może ale nie musi)
- typ
W języku C# obowiązują określone zasady nazewnictwa zmiennych. Nazwa zmiennej może składać się jedynie z alfanumeryków (cyfra lub litera (mała lub duża)) oraz znaku podkreślenia. Nazwa zmiennej również nie może być słowem kluczowym oraz nie może się zaczynać od cyfry – wykaz słów kluczowych znajdziesz pod adresem.
W nazwach zmiennych rozróżniane są małe i duże litery. W nazwach również możemy stosować polskie znaki diakrytyczne, zaś stosowanie ich nie jest zalecane. Podobnie jest w nazwach metod oraz klas.
Poniże przedstawię deklarację przykładowej, pojedynczej zmiennej, a mianowicie zmiennej x o typie int i wartości inicjującej = 10.
1 2 3 4 5 6 7 8 9 10 11 12 |
namespace test1 { class Program { static void Main(string[] args) { int x=10; Console.WriteLine(x); Console.ReadKey(); } } } |
Drugim sposobem deklaracji tej samej zmiennej w przypadku tak krótkiego programu może być poniższy zapis.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
namespace test1 { class Program { static void Main(string[] args) { int x; x=10; Console.WriteLine(x); Console.ReadKey(); } } } |
Możemy w jednej linii naszego programu zadeklarować kilka zmiennych.
Jako, że z nie samych liczb całkowitych podczas naszej kariery programistycznej będziemy korzystać, należy zapoznać się
z pozostałymi typami wbudowanym, które można znaleść pod tym adresem.
Dla każdego z typu danych znajdziemy informację o:
- zakresie wartości
- rozmiarze / precyzji
- rodzaju (wartościowy / referencyjny)
Wszystkie typy wbudowane możemy podzielić na 4 rodzaje:
- logiczny (np. bool)
- całkowity (np. char, long, byte czy też int 🙂 )
- zmiennoprzecinkowy (np. float)
- string (służący do zapisu łańcucha znaków. Jako jedyny z ww. jest typem referencyjnym)
Sądzę, że nt. zmiennych, ich typów oraz deklaracji powiedzieliśmy sobie dziś podstawowe informacje. Niewątpliwie w kolejnych wpisach będziemy do tych zagadnień powracać.
W kolejnym wpisie poruszymy zagadnienia związane z wyrażeniami algebraicznymi, zatem ‘liźniemy’ trochę matematyki 😉