Back to Top

Język C# i .NET Core

C# to język programowania stworzony i utrzymywany przez firmę Microsoft. Język C# pozwala na pisanie oprogramowania różnego typu: począwszy do aplikacji internetowych lub okienkowych, a skończywszy na aplikacjach mobilnych na system Android lub iOS. Przy pomocy języka C# i silnika Unity możemy również tworzyć gry na wszystkie obecnie dostępne platformy m.in. Windows, Playstation 4 czy Xbox One.

Wsparcie firmy Microsoft zapewnia również szereg darmowych narzędzi. Na przykład Visual Studio 2017 Community, jedno z najlepszych zestawów narzędzi programistycznych (nie tylko dla języka C#) jest dostępne zupełnie za darmo, również do zastosowań komercyjnych dla firm, których przychód nie przekracza jednego miliona dolarów roczne – kilka lat temu jego koszt wynosił ok. 2000 zł. Platforma Xamarin, która pozwala tworzyć aplikacje mobilne, zanim została kupiona przez Microsoft, kosztowała od 1000 do 2000 dolarów. Teraz jest za darmo, na takich samych zasadach jak Visual Studio 2017 Community.

Dlaczego mówi się C# i .NET, a nie po prostu C#?

  • Platforma .NET to środowisko programistyczne, które pozwala na uruchamianie aplikacji napisanych w języku C# oraz wielu innych językach programowania, takich jak: F#, Visual Basic, itp.

  • C# to język programowania, który działa na platformie .NET. Instalacja platformy jest niezbędna, aby uruchomić program, który jest pod nią napisany.

  • Język C# możemy porównać do języka polskiego, w którym piszemy przepisy kulinarne. .NET to kuchnia na gaz, która posłuży ugotowania obiadu i tym samym zrealizowania instrukcji zawartych w przepisie.

Lekcja 1

Pisanie Programu

Program piszemy w języku programowania. Język ten różni się od zwykłego języka tym, że posiada o wiele mniejszy zasób słów (ok. 100) i stosuje sporo nawiasów, znaków średnika i dwukropka.

Główną różnicą w podejściu do pisania między zwykłym językiem a językiem programowania jest dokładność. Komputer nie myśli, a więc niczego nie wywnioskuje z kontekstu i niczego się nie domyśli.

Po polsku, kiedy napiszemy: zrób obia – (celowo nie dodałem litery "d" na końcu wyrazu) i tak domyślimy się o co chodzi. W języku programowania brak jednego średnika spowoduje błąd – jest to częsty błąd początkujących. Na szczęście, jeśli korzystamy z profesjonalnego oprogramowania, dostaniemy informację o miejscu wystąpienia błędu i nie musimy przeszukiwać całego programu.

Komputer czyta napisane przez nas instrukcje od góry do dołu – tak jak człowiek –chyba, że trafi na instrukcję, która skieruje go w inne miejsce.

Gotowanie Programu

Aby w przystępny sposób zrozumieć, z czego składa się program, posłużę się pewną analogią. Pracę programisty można porównać do pracy kucharza. Aby przyrządzić obiad – w naszym przypadku program – kucharz potrzebuje następujących rzeczy:

  • Talerzy, misek i pojemników na produkty, z których kucharz przygotuje obiad. W programowaniu będą nimi zmienne.

  • Produktów, które położymy na talerzach, wsadzimy do misek, i z których będziemy przygotowywać obiad. W programowaniu będą to dane zawarte w zmiennych.

  • Instrukcji, jak przygotować, mieszać i gotować poszczególne składniki, aby dostać dobry obiad. W programowaniu będą to również instrukcje, ale napisane w języku C#.

  • Czasu, aby wykonać wszystkie instrukcje i otrzymać posiłek. W programowaniu będzie to tzw. kompilacja, czyli zamiana tekstu na gotowy do uruchomienia program.

Każda z wymienionych rzeczy ma swoją analogię w programowaniu, którą wyjaśnimy w kolejnych rozdziałach.

Zmienne

Zmienne to zarezerwowane fragmenty pamięci komputera, które przechowują dane naszego programu. Porównując je do pracy kucharza, zmienne to pojemniki na składniki, których potrzebujemy, aby przyrządzić obiad. Zmienne charakteryzują 3 rzeczy:

  • Typ

  • Nazwa

  • Zawartość

Przykład deklaracji zmiennej o nazwie number, typu int i wartości 100.

int number = 100;

W kolejnym przykładzie zadeklarowaliśmy zmienną typu string o nazwie text i wartość Text.

string text = “Text”;

Typ

Zmienne mogą być różnego typu, podobnie jak pojemniki. W siatce trzymamy ziemniaki, a w butelce mleko – nie odwrotnie. Zmienne określonego typu mogą przechowywać tylko pasujące do tego typu dane.

Wyróżniamy 5 podstawowe typy zmiennych:

  • string – typ przechowujący tekst, np. "Ala ma kota".

  • int – typ przechowujący liczby całkowite, np. 1 lub -555.

  • bool – typ przechowujący jedną z dwóch wartości, true lub false.

  • char - typ przechowujący jeden znak, np. ‘x’ lub ‘A’.

  • double - typ przechowujący liczby zmiennoprzecinkowe, np. 2.5 lub -44.556. Pamiętaj, że separatorem liczby zmiennoprzecinkowej jest kropka, a nie przecinek.

Zmienna typu int nie może zawierać w sobie tekstu, a zmienna typu string nie może przechowywać liczby.

Nazwa

Zmienne posiadają nazwy, abyśmy mogli się do nich odnieść w instrukcjach. Nazwy zmiennych mogą być dowolne, chociaż mają pewne ograniczenia. Mogą się składać tylko z liter i cyfr oraz znaku podkreślenia. Nie mogą zaczynać się od cyfry.

W pracy kucharza nie nazywamy poszczególnych pojemników ze składnikami. Odnosimy się do nich poprzez umieszczone w nich składniki. Na przykład w instrukcji przyrządzenia obiadu napiszemy: wsyp 10 gramów cukru, zamiast wsyp 10 gramów cukru z pojemnika o nazwie „Cukier 1”. Podczas gotowania domyślimy się o jaki pojemnik chodzi. Komputer niczego się nie domyśli, więc wszystko musi mieć unikalną nazwę.

Zawartość

Podobnie jak pojemniki zawierają składniki, zmienne mogą zawierać dane. Zmienne mogą nie zawierać wartości, tak jak pojemniki mogą być puste.

Skąd biorą się dane w zmiennych?

W większości z 3 źródeł:

  • Dane umieszczone przez programistę.
    Są to dane na sztywno wpisane przez programistę w kodzie źródłowym programu, czyli składniki przyniesione przez kucharza.

  • Dane pobrane od użytkownika.
    Na przykład dane wprowadzone w polach tekstowych, które następnie są przypisywane do zmiennych. Na nich wykonujemy kolejne operacje. To składniki wzięte prosto od klientów.

  • Dane wynikowe.
    To dane, które postały w wyniku wykonywania operacji na innych danych. Na przykład, aby dodać dwie liczby potrzebujemy miejsca na wynik dodawania. Można to porównać do pustych pojemników, które służą do tymczasowego mieszkania i łączenia składników oraz talerza na wynik połączenia wszystkich składników.

Deklarowanie Zmiennych

Skoro znamy już 3 składowe zmiennych, możemy przystać do ich utworzenia, czyli deklaracji. Deklaracja składa się z typu i nazwy, oraz (opcjonalnie) wartości, którą zmienna będzie zawierać.

Zadeklarowaliśmy zmienną typu string o nazwie name z wartością Wojtek.

string name = "Wojtek";

Ponieważ program wykonuje się od góry do dołu, dopiero od momentu deklaracji, możemy korzystać ze zmiennych.

int age = 18;

Zmienna typu int o nazwie Age przechowuje liczbę 18.

Null

Do zmiennej typu string możemy dodatkowo przypisać tzw. null. Null oznacza brak wartości.

Pozostałe poznane typy nie mogą wskazywać wartości null.

string text = null;

Wnioski z Deklaracji

Na podstawie dwóch utworzonych deklaracji, możemy wynieść 3 wnioski:

  • Aby zainicjować zmienną wartością, używamy znaku równości.

  • Każda instrukcja kończy się znakiem średnika.

  • Kiedy w kodzie programu chcemy utworzyć tekst, obejmujemy go znakami cudzysłowu.

Zobacz deklaracje kilku zmiennych:

Repl.it - rozwiąż zadania

Repl to platforma, która pozwala na napisanie i uruchomienie kodu napisanego w języku C#. Zanim przystąpisz do analizowania kodu oraz wykonywania zadań, musisz wiedzieć, że nawet prosta aplikacja składa się jeszcze z kilku elementów:

  • using System - to tzw. deklaracja przestrzeni nazw. Jeśli korzystamy z funkcji, musimy zadeklarować miejsce, w których te funkcje się znajdują.

  • class MainClass - to tzw. klasa, czyli deklaracja obiektu, który zawiera jedną funkcję o nazwie Main. Funkcja Main jest automatycznie wywoływana podczas uruchomienia programu, dlatego w jej obrębie umieszczamy nasz kod.

using System;
 
class MainClass
{
    public static void Main (string[] args)
    {
        // Wszystkie czynności zrób między nawiasami klamrowymi.
        // Reszta kodu nie jest na razie istotna.
    }
}

Przykład 1

Kod, który widzisz, deklaruje 3 zmienne. Następnie wyświetla je w konsoli obok.

Wyświetlanie Wyników

Kiedy wykonujemy operacje na zmiennych, np. dodawanie, wszystkie operacje są wykonywane w pamięci komputera. Aby zobaczyć jaką wartość przechowuje zmienna, trzeba skorzystać z funkcji Console.WriteLine(). Zmienną, którą chcemy wyświetlić, należy wpisać między nawiasy okrągłe.

Zobacz przykłady działania funkcji, która wyświetla wartości zmiennych.

Przykład 2

Komentarze

Plik z programem może zawierać nie tylko instrukcje, ale również tzw. komentarze. Jest to tekst, który nie jest traktowany jako instrukcje programu. W komentarzach możemy umieszczać swoje spostrzeżenia i uwagi.

Komentarze zaczynają się od dwóch znaków ukośnika.

// Przykład komentarza.

Zadanie 1

Utwórz 3 zmienne na dane i przypisz do nich następujące wartości:

  • Zmienną o nazwie name, która przechowa tekst "John".

  • Zmienną o nazwie salary, która przechowa liczbę 12000.

  • Zmienną o nazwie happy, która przechowa wartość true.

Zadanie 1

Rozwiązanie zadania 1

Zadanie 2

Zobacz kod, znajdź i napraw w nim błędy.

Zadanie 2

Rozwiązanie zadania 2

Zadanie 3

Zobacz kod, są tam zadeklarowane zmienne. Za pomocą funkcji Console.WriteLine(), wyświetl ich wartość w konsoli obok.

Zadanie 3

Rozwiązanie zadania 3