Podstawy C#

Dobrą zasadą, którą warto stosować już podczas nauki programowania jest stosowanie komentarzy. Komentarz to nic innego jak wolny tekst napisany przez programistę informujący o zastosowanych zmiennych, szczegółach algorytmu wyniku działania lub sposobie działania pewnej funkcji. Oczywiście zastosowań jest o wiele więcej. Komentarze mogą przydać się szczególnie podczas pisania aplikacji, które będziesz w przyszłości rozwijać. Dobrą zasadą jest stosowanie komentarzy na każdym etapie programowania. Unikniesz w ten sposób sytuacji, gdy po napisaniu pewnej części programu robisz sobie kilkudniową przerwę, a po powrocie nie rozumiesz tego co pisałeś. Komentarze ułatwiają także zrozumienie kodu innym programistom, którzy w przyszłości także mogą zajmować się jej rozbudową. Pamiętaj także, że komentarze są ignorowane przez kompilator więc w żaden sposób nie powiększają one kodu wynikowego twojej aplikacji. Niech więc komentarze będą twoim sprzymierzeńcem a ich stosowanie będzie codziennością w twoim programowaniu.
W języku C# występuje kilka rodzajów komentarzy. Pierwszy z nich jest komentarzem wielolinijkowym. Tekst w komentarzu jest zawarty pomiędzy znacznikami /*  treść komentarza */. Komentarz taki może mieć wiele linijek tekstu. Drugi z komentarzy, zaczynający się od znaków // treść komentarza, jest komentarzem jednolinijkowym do kodu źródłowego. Ten typ komentarz przydaje się zwykle do opisywania pojedynczej linii programu.

// tutaj zaczyna się program <- to też komentarz
static void Main (string[] szArgs)
{
  /* To jest komentarz, który może mieć kilka linijek. 
     Taki opis może służyć do długich opisów. */
            
  // A to jest komentarz jednolinijkowy, oto przykład:
 int wiek; // deklaruję zmienną wiek, w której przechowuję wiek użytkownika
}

Zmienne i stałe

W niniejszym podrozdziale zajmiemy się poznawaniem zmiennych oraz ich typami. W języku C#  występuje wiele typów zmiennych. Poniższa tabela przedstawia najczęściej wykorzystywane typy zmiennych oraz ich minimalne i maksymalne wartości.

Typ zmiennej Wartości przyjmowane przez typ zmiennej Opis typu
bool true, false Zmienna używana do określenia logicznego tak lub nie. Domyślnie zadeklarowana zwraca false.
byte od 0 do 255 Wartość liczbowa.
sbyte -127 do 127 Wartość liczbowa, dodatkowo umożliwiająca liczby ujemne.
short -32768 do 32767 Zmienna przechowująca liczbę – 16 bitów.
int -2147483648 do 2147483647 Zmienna 16 bitowa, liczby całkowite
long -9223372036854775808 do 9223372036854775807 64 bitowa liczba całkowita.
float 1,4*10-45 do 3.403*1038 32 bitowa liczba zmiennoprzecinkowa
double 4,9*10-324 do 1,798*10308 64 bitowa liczba zmiennoprzecinkowa
decimal 10-28 do 7,9*1028
char Znak zapisany w formacie Unicode
string Łańcuch tekstowy w formacie Unicode

W języku C# można deklarować stałe. Stała różni się od zmiennej tym, że nie zmienia się jej wartość. Stałych można używać do wielu celów, przykładem może być użycie stałych matematycznych, jak na przykład liczba PI. Jak wiadomo, liczba ta jest niezmienna i wynosi 3,14 bez dokładniejszych przybliżeń, których może być kilkadziesiąt po przecinku. Jednak w programie można zadeklarować:

public const double PI = 3.14;

Po takiej deklaracji, odwołanie do wartości liczby można realizować następująco:

System.Console.WriteLine("Wartość PI: " + PI);

Zmienne wyliczeniowe

Zmienne wyliczeniowe służą do definiowania zbiorów wartości określonych w definicji. Dobrym przykładem zmiennej wyliczeniowej są dni tygodnia.

public enum dnityg {poniedziałek, Wtorek, Środa, Czwartek, Piątek, Sobota, Niedziela};

Odwołanie do zmiennej wyliczeniowej realizowane jest następująco:
enumvar

Powyższy przykład kodu wykorzystuje typ wyliczeniowy. Jak widać, zadeklarowany typ zmienej dnityg może przyjmować wartości przypisane w zmiennej dnityg.wartosc. Możliwa jest także deklaracja nowej zmiennej typu dnityg, która również przyjmie wartość jednego z elementów typu.

dnityg moj_dzien = dnityg.Wtorek;

W tym przypadku utworzona została nowa zmienna moj_dzien zadeklarowana jako typ dnityg.

Operatory

Operatory służą do działań na zmiennych oraz zwracania wartości logicznych w przypadku np. porównywania wartości zmiennych. Poniższej podane zostały najważniejsze operatory języka C# wraz z ich opisem. Porządek operatorów ustalony według ich priorytetów.

Operatory języka C# wraz z opisem.

( ) Nawias grupujący
. Dostęp do składowych obiektu
[ ] Indeksowanie np. tablicy
++ — Inkrementacja (zwiększanie) i dekrementacja (zmniejszanie)
new tworzenie nowego obiektu
typeof, sizeof typ obiektu, rozmiar
! negacja „nie”
& pobranie adresu
* / % Mnożenie, dzielenie oraz modulo (reszta z dzielenia)
+ – Dodawanie i odejmowanie
> < >= <= Relacje: większe, mniejsze, większe bądź równe i mniejsze bądź równe
= = i != Czy równe bądź czy nie równe
| & ^ Bitowe operatory logiczne
|| i && operatory logicznej alternatywy (lub) i koniunkcji (i)
?: trójargumentowy operator warunku
= *= += -= %= &= operatory przypisania

 

Tablice jedno i wielowymiarowe

Tablice są bardzo pożytecznym aspektem programowania. W tablicy można przechowywać elementy tego samego typu. Wielkość tablicy może być dowolna i zależy tylko od dostępnej pamięci komputera. Tablica jednowymiarowa może przechowywać listę zmiennych, do której odwołuje się poprzez jego indeks w tablicy. Przyjrzyjmy się przykładowej tablicy:

18
20
25
30

Tablica posiada 4 elementy o przypisanych wartościach. W typ przypadku wartościami są liczby, ale nic nie stoi na przeszkodzie, aby zadeklarować tablicę, która będzie przechowywać zmienne typu tekstowego.

Deklaracja tablicy wygląda następująco:

typ_danych_przechowywanych[] nazwa_tablicy;
np. int[4] tabela;

Mając zadeklarowaną zmienną tablicową wiek, należy ją zainicjalizować poprzez operator new przekazując jako parametr ilość elementów tablicy.

wiek = new int[4];

Na koniec należy wprowadzić wartości do poszczególnych elementów tablicy posługując się ch indeksem. W języku C#, podobnie jak w C czy C++, indeks tablicy zaczyna się od 0. Tak więc, w naszym przypadku, prawidłowe indeksy będą zawierać się w zakresie 0 – 3. Podczas przypisywania wartości zmiennych do tablicy należy szczególnie uważać, gdyż próba zapisania poza zakresem indeksu tablicy powoduje wywołanie błędu Index was outside the bounds of the array.

wiek[0] = 18; 
wiek[1] = 20; 
wiek[2] = 25; 
wiek[3] = 30; 

W ten sposób wypełniliśmy naszą tablicę wartościami liczbowymi. Ponowne wpisanie wartości do tablicy zastępuje poprzednią przechowywaną wartość. Tablice posiadają bardzo przydatną metodę pozyskiwania informacji i jej wielkości. Służy do tego właściwość Length.

System.Console.WriteLine(wiek.Length);

Powyższa linijka programu wyświetli na ekranie ilość elementów tablicy. Spróbujemy teraz wyświetlić na ekranie wartość dowolnego elementu tablicy. Odwołując się do danego indeksu, wyświetlamy jego wartość:

System.Console.WriteLine(wiek[2]);

Wyświetliliśmy właśnie wartość 3(!) indeksu tablicy, gdyż jak pamiętamy, indeksy tabel liczone jest od 0 (0,1,2,3), choć właściwość Length wyświetliła 4.

Bliżej o typie łańcuchowym

Typ tekstowy, nazywany także łańcuchowym, wymaga dokładniejszego wyjaśnienia. W programach często stosuje się operacje na tym typie danych. Przede wszystkim należy zrozumieć, czym jest łańcuch znaków. Mówiąc krótko, jest to tablica.

Zmiennymi znakowymi jest wszystko, co zostanie zadeklarowane jako typ String i umieszczone w cudzysłowie. W zmiennych można stosować znaki specjalne, będące znakami sterującymi (opis w tabeli).

Uwaga! – wstawiając znak @ tuż przed łańcuchem kompilator będzie traktował dosłownie wszystkie znaki w łańcuchu.

Definiowanie zmiennej tekstowej String o nazwie Tekstowa:

String Tekstowa = ”Ten tekst to wartość naszej zmiennej Tekstowa”;

Teraz pod zmienną Tekstowa została przypisana wartość tekstu z cudzysłowiu.

Spróbujmy przećwiczyć kilka ważnych operacji na łańcuchu znaków. Utwórzmy nowy projekt przy pomocy skrótu Ctrl+Shift+N lub z menu FileNew Project…, jako typ aplikacji wybierz Console Application. Gdy nowy projekt zostanie utworzony, możesz poeksperymentować na typach łańcuchowych. Pamiętaj, aby kody z poniższych przykładów wpisywać tylko w sekcji Main(), pomiędzy nawiasy klamrowe { }.

Pobieranie ilości znaków w zmiennej String

Zadeklarujmy zmienną Ilość_Znakow o typie int, w której przechowamy ilość znaków zmiennej Tekstowa. Jak się przekonasz w dalszej części tego rozsziału, operacja sprawdzania ilości znaków w tekście jest niezwykle pożyteczna.

int Ilość_Znakow = Tekstowa.Length;

W zmiennej ilość_znakow otrzymamy wartość będącą ilością znaków w zmiennej tekstowej ilosc_znakow.
Wstawianie i dopisywanie zmiennych tekstowych:
Zajmiemy się teraz wstawianiem jednego łańcucha tekstowego do drugiego. Najpierw zadeklarujmy jakieś dwie zmienne łańcuchowe, których będziemy używać we wszystkich przykładach operacji na tekstach:

String tekst1 = "drugi, trzeci, czwarty";
String tekst2 = "pierwszy, ";

Zdefiniowaliśmy dwie zmienne typu String i przypisaliśmy im wartości (tekst). Aby wstawić zmienną tekst2 do zmiennej tekst1 można użyć instrukcji przypisania:

tekst1 = tekst1+tekst2;  ale lepiej gdy zapiszemy: tekst1 +=tekst2;

Zmienne tekstowe lub teksty można ze sobą łączyć za pomocą operatora +.

Console.WriteLine(”Jeden,”+” Dwa”+” Trzy! ”+tekst1);

Jak widać, obie metody są poprawne, ale druga metoda wygląda nie tylko lepiej ale jest także krótsza. Jednak jeszcze lepszą metodą jest użycie metody Insert(indeks, tekst), która według podanych parametrów wstawia zmienną tekstową do drugiej w określonej pozycji. Indeks jest w tym przypadku początkowym miejscem wstawienia licząc od lewej strony. Tekst, może być podany w cudzysłowiu, np. „pierwszy” lub być zmienną typu string.

String pierwszy = ”drugi, trzeci, czwarty”;
String drugi = ”pierwszy, ”;
tekst1 = tekst1.Insert(0, tekst2);

Ostatnia linijka kodu wstawia zmienną tekst2 do tekst1 na jego początku (indeks 0). Proszę pamiętać, że indeksy zmiennych String liczymy od 0. Jeśli zajdzie potrzeba, to możemy utworzyć nową zmienną tekstową, w której umieścimy złączone zmienne tekstowe.

String tekst3 = "Witam, nazywam się ";
String tekst2 = "Leszek Klich";
String tekst1 = String.Concat(tekst3,tekst2);
Console.WriteLine(tekst1);

Porównywanie łańcuchów znakowych:
Do porównywania dwóch zmiennych tekstowych można posłużyć się metodą Equal(zmienna). Jeśli łańcuchy są identyczne, to w wyiku opracji porównania otrzymamy wartość True. W przeciwnym wypadku zwrócona będzie wartość False.

String tekst1 = "Wartość 1";
String tekst2 = "Wartość 2";
Boolean taki_sam = tekst2.Equals(tekst2);

Zastępowanie znaków w tekście:
Spróbujmy teraz zmienić nasz program tak, aby zmieniał określony fragment tekstu. Zadeklarujmy zmienną tekstową tekst1 i przypiszmy jej wartość domyślną w cudzysłowiu. Następnie wykorzystując metodę Replace podając jej dwa parametry – fragment, który chcesz zmienić w tekście i nowo tekst, jaki powinien zostać wstawiony.

String tekst1 = "Programowanie jest naprawdę fajne!"
Console.WriteLine("Przed zmianą: " + tekst1)
tekst1 = tekst1.Replace("fajne", "super")
Console.WriteLine(tekst1)

Wydobywanie tekstu z łańcucha znaków:
Funcka „wydobywająca” fragment łańcucha znakowego z tekstu to Substring.

String tekst2 = "Programowanie jest na prawdę fajne!";
String tekst1 = tekst2.Substring(12,6);

W powyższym przykładzie w zmiennej tekst1 otrzymamy fragment zmiennej tekstowej tekst1.

Zamiana znaków z dużych na małe i odwrotnie:
Kolejną operacją na tekscie będzie przekształcanie łańcucha znaków na duże lub małe litery. Funkcja ToUpper(), zamienia wszystkie znaki w zmiennej tekstowej na WIELKIE LITERY.

String tekst1 = "Programowanie jest na prawdę fajne!";
tekst1 = tekst1.ToUpper();
Console.WriteLine("Na duże :"+tekst1);

Metodą odwrotną do ToUpper() jest metoda ToLower(). Zamienia ona znaki w tekście na małe litery.

tekst1 = tekst1.ToLower();
Console.WriteLine("Na małe :" + tekst1);

Obcinanie spacji z tekstu
Metodą usuwającą znaki spacji w zmiennej tekstowej jest Trim(). Usuwa ona spacje po lewej i prawej stronie tekstu.

String tekst1 = "   Programowanie jest na prawdę fajne!  ";
tekst1 = tekst1.Trim();

Operacja TrimStart(); usuwa spacje po lewej stronie tekstu, zaś TrimEnd(); usuwa puste znaki spacji po prawej stronie tekstu.

540total visits,1visits today

Tagi , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

14 + = 15

This site uses Akismet to reduce spam. Learn how your comment data is processed.