
Kurs C# cz.1 – Zacznijmy od wstępu
UWAGA! Już teraz sprawdź NOWY, JESZCZE LEPSZY kurs C#, którzy przygotowałem. Znajdziesz go po TYM linkiem.
Jeśli śledzicie mój blog to być może zauważyliście, że programuję głównie w języku kojarzonym z Microsoftem czyli w C#. Zajmuję się tym już dłuższy czas więc jakieś jego podstawy mam opanowane, a teraz chcę się moją wiedzą podzielić z Wami. Kurs ten powstał po części jako odpowiedź na pytanie kolegi czy znam jakiś polski kurs właśnie języka C#. Przyjąłem raczej założenie, że kieruję tą serię do osób, które spotkały się z jakimiś minimalnymi podstawami programowania, ponieważ wolę się skupić na samym języku bez bardzo dokładnego opisywania uniwersalnych zagadnień. Jednak jeśli masz problem z jakimś fragmentem, uważasz, że mógłbym go opisać dokładniej albo w inny sposób to dawaj znać w komentarzu lub pisząc do mnie na adres contact@zajacmarek.com. Pojawiały się już na moim blogu kursy programowania, jednak ten będzie o tyle inny, że mniej więcej wiem od razu jaki zakres wiedzy na pewno będę chciał przekazać, poza tym mówię tutaj o zagadnieniu, na którym jestem skupiony na codzień co z jednej strony daje nadzieję, że znajdziecie tutaj odpowiednią ilość informacji, a z drugiej niesie za sobą ryzyko w postaci zakładania przeze mnie, że jakieś zagadnienia są oczywiste i nie opisywania ich wystarczająco obszernie. Tą część można potraktować jako odcinek pilotażowy. Liczę, że w razie problemów lub wątpliwości przy czytaniu będziecie zgłaszać swoje uwagi co do ilości informacji i mojego stylu pisania dzięki czemu kolejne części będę mógł pisać dla Was coraz lepiej. Ale po tym krótkim wstępie do wstępu zaczynajmy przygodę!
1. Kurtyna w górę!
Co to byłby za kurs bez nudnej teorii na początku, dlatego w pierwszej części powiem Wam czym jest język C#, w jakim środowisku można go używać i co jest potrzebne, żeby uruchamiać stworzone w nim programy. Potem przejdziemy do kolejnej obowiązkowej części czyli do programu Hello World.
1. Język
C# jest obiektowym językiem programowania wysokiego poziomu. Stworzony został na potrzeby firmy Microsoft i z nią jest głównie kojarzony. Jednak w rzeczywistości jest on wieloplatformowy i posiada otwartą specyfikację. Programy pisane w języku C# kompilowane są do kodu pośredniego, który wymaga do uruchomienia odpowiedniego środowiska. Najpopularniejszym środowiskiem dla języka C# jest .NET Framework jednak poza nim istnieje np. Mono, które można spotkać chociażby w systemach Linux. Aktualnie wprowadzana jest powoli wersja 6.0 języka.
2. IDE
Teoretycznie programy w języku C# pisać można nawet w windowskowym notatniku i kompilować je korzystając z konsoli jednak większość programistów wykorzystuje chwalone nawet przez osoby z innych „obozów” IDE Visual Studio. Do niedawna darmowa wersja oznaczana była jako Express i posiadała sporo ograniczeń zwłaszcza związanych z pracą w zespole i analizą kodu względem płatnych wersji. Jednak aktualnie Microsoft zamknął wersję Express i wypuścił w jej miejsc wydanie Community, które jest w dużej części identyczne jak wydanie Professional, jest jednak dalej darmowe i w przeciwieństwie do wersji Express w końcu umożliwia instalowanie dodatków co było jednym z powodów kupowania wyższych wersji przez zawodowych programistów pracujących w domu. W tym kursie wolę się skupić na samym języku niż pokazywać jak zainstalować IDE ponieważ po pierwsze każdy może wybrać to co lubi, a po drugie instalacja Visual Studio jest bardziej czasochłonna niż trudna i jest duża szansa, że nawet bez Google większość z Was sobie poradzi jednak jeśli ktoś potrzebuje zobaczyć co i jak i przy okazji chce poznać podstawowe funkcje to zapraszam na koniec tego artykułu, tam dodałem osobny blok poświęcony IDE.
3. Co potrzeba do uruchomienia
Jak wspomniałem już wcześniej do uruchamiania programów napisanych w języku C# wymagane jest środowisko uruchomieniowe i najczęściej wykorzystywanym w tym celu środowiskiem jest .NET Framework dostarczany przez Microsoft. Aktualnie .NET Framework we w miarę aktualnej wersji dostarczany jest razem z systemem Windows i potem razem z nim aktualizowany dlatego jeśli pracujesz na tym systemie to jest duża szansa, że bez problemu możesz uruchamiać aplikacje pisane w języku C#. Środowisko .NET zawiera większość biblioteki podstawowej, którą można wykorzystać w swoich programach. Zaletą i jednocześnie wadą takiego stanu rzeczy jest to, że instalując .NET Framework instalujemy większość wykorzystywanych pakietów za jednym razem przez co nie muszą być one dostarczane przez każdy program z osobna i dlatego paczki z Twoimi programami mogą być dużo mniejsze jednak wada jest taka, że samo środowisko zajmuje zdaniem niektórych bardzo dużo miejsca (aktualnie >1GB) i jego ewentualna aktualizacja czy świeża instalacja jest ciężka. .NET Framework odpowiada także za zarządzanie pamięciom uruchomionych programów. Jeśli pisałeś wcześniej aplikacje w języku C lub C++ to kojarzysz jak musiałeś pamiętać o zwalnianiu przydzielonej pamięci. Pisząc w C# nie musisz się martwić o usuwanie obiektów, robi to za Ciebie sprytny mechanizm – Garbage Collector. Ułatwia to w sporej mierze pracę jednak powoduje jednocześnie, że nie masz kontroli nad tym kiedy usuwanie zbędnych obiektów nastąpi, a jest to proces, który potrafi na ułamek sekundy spowolnić program (to wszystko przestaje mieć jednak takie znaczenie kiedy po spędzeniu kilku lat w piwnicy przy komputerze i studiowaniu wszystkich dostępnych mechanizmów i technik umiesz tak konstruować kod i wykorzystywać elementy środowiska, że w dużym stopniu panujesz nad tym co się dzieje w programie).
2. Zaczynamy zabawę!
1. Pierwszy fragment kodu
Po przydługim wstępie czas w końcu na ostrą jazdę bez trzymanki czyli pierwszy prawdziwy Hello World, który napiszesz samodzielnie (widzę jak już przesuwasz palce na klawisze Ctrl-C, Ctrl-V, sio mi z tym, zostaw!) w języku C#. Bez zbędnego gadania zaczynamy od kodu:
using System; namespace Kurs { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
Jeśli skompilujesz i uruchomisz program to dostaniesz na ekranie (w Windowsie standardowo właściwie tylko szybko mignie okno i program się wyłączy jeśli nie ma dopisanej instrukcji oczekiwania na reakcję użytkownika lub nie uruchomisz go nawigując do odpowiedniego katalogu poprzez samą konsolę) napisany w konsoli tekst „Hello World!”. Być może jesteś teraz w szoku, próbujesz panicznie złapać łyk powietrza drżąc z przerażenia po tym jak ogrom nieznanych Ci zagadnień i konstrukcji Cię uderzył, ale spokojnie, zaraz opanujemy sytuację. Na początek omówię z grubsza każdy widoczny tutaj element, potem, w następnych częściach sukcesywnie będziemy zagłębiać się w szczegóły.
2. Winny się tłumaczy
Zacznę może tak od wnętrza czyli od Console.WriteLine(„Hello World!”); . Jest to wywołanie statycznej (czyli nie wymagającej tworzenia obiektu) metody WriteLine, która wypisze, podany jako argument, tekst „Hello World!”, i która znajduje się w klasie Console. Klasa Console jest jedną z klas biblioteki standardowej udostępniającą wiele metod związanych z interakcją użytkownika z konsolą systemową. Jeśli nie programowałeś wcześniej w żadnym języku obiektowym to za chwilę powiem czym jest klasa.
Teraz czas na kolejną „warstwę” czyli metodę static void Main(string[] args) . Domyślnie w aplikacjach konsolowych jest to metoda wejściowa, od której zaczyna się wykonywanie naszego programu. Jest ona statyczna i nie zwraca żadnych wartości, za to jako parametry przyjmuje tablicę zawierającą argumenty przekazane do naszego programu podczas uruchamiania. Metody są blokami kodu, które można wielokrotnie wykorzystać w różnych sytuacjach. Mogą one zwracać jakąś wartość, mogą też dostawać różne parametry, na których będą wykonywać operacje.
Nasza metoda znajduje się w klasie o nazwie „Program”. Klasy pozwalają grupować metody i wartości w logiczną całość tworząc nowe typy danych. Porównując to do rzeczywistości np. silnik, koła i fotele same w sobie są osobnymi bytami, jakimiś „prostymi” obiektami, które mogą istnieć niezależnie od siebie i pełnić różne funkcje. Jednak możemy je wszystkie zebrać razem i włożyć do „klasy” nazwanej samochodem gdzie zaczynają spełniać konkretną funkcję i tworzą pewną całość. W tym momencie samochód staje się nowym typem. To tak bardzo w skrócie. Prawda jest taka, że zrozumienie pojęcia klas i obiektów w programowaniu każdemu przychodzi z różną łatwością. Na pewno myślenie abstrakcyjne tutaj pomaga.
W tym momencie doszliśmy już do przestrzeni nazw, którą oznacza się zaczynając od słowa kluczowego „namespace” podając po nim naszą nazwę. Przestrzenie nazw można traktować jako swojego rodzaju logiczne foldery, zresztą tworząc projekt np. w Visual Studio przestrzenie nazw dla nowych plików źródłowych domyślnie odzwierciedlają strukturę folderów w jakich te pliki umieszczamy. Kolejne elementy przestrzeni nazw oddziela się od siebie kropką. Przestrzenie nazw pozwalają jednoznacznie odnosić się do interesujących nas klas znajdujących się w różnych bibliotekach lub innych częściach naszej aplikacji. Dlatego programując w C# często spotkasz się z zapisami typu System.IO.File gdzie ostatni człon czyli File to nazwa klasy, a dwa pierwsze są przestrzenią nazw. Z tym zagadnieniem wiąże się również ostatnia rzecz w naszym programie, której jeszcze nie omówiłem. Mianowicie zapis using System; . Jak być może się domyślasz pisanie za każdym razem pełnej przestrzeni nazw dla interesującej nas klasy jest irytujące i na pewno nie poprawia czytelności kodu i szybkości powstawania programu. Dlatego mamy możliwość powiedzenia kompilatorowi, że w danej przestrzeni nazw chcemy używać typów dostępnych w innej przestrzeni nazw bez konieczności podawania jej w całości za każdym razem właśnie poprzez użycie słowa kluczowego using. W tym miejscu należy podać dwie uwagi. Po pierwsze słowo kluczowe using występuje też w innym kontekście w kodzie, o którym teraz nie będę wspominał. Druga uwaga jest taka, że jeszcze do niedawna chcąc korzystać ze statycznych metod np. podanej wcześniej WriteLine nie mogliśmy podać w konstrukcji using również nazwy klasy jednak od wersji 6.0 języka C# możemy napisać:
using System.Console;
A następnie wywołać w kodzie metodę WriteLine bez konieczności poprzedzania jej nazwą klasy:
WriteLine("Hello World!");
Jednak z tym zapisem spotkasz się na razie raczej rzadko, po pierwsze dlatego, że wersja 6.0 języka C# nie jest jeszcze powszechnie używana, a po drugie taki zapis tylko nieznacznie skraca kod, a jednocześnie niekoniecznie poprawia czytelność kodu.
W tym momencie mamy już mniej więcej omówiony pierwszy Hello World w języku C#. Jestem świadomy tego, że niektóre zagadnienia mogą nie być dla niektórych wystarczająco jasne, zwłaszcza jeśli ktoś z Was wcześniej nie programował lub programował bardzo mało. Jednak żeby móc każdy fragment dokładnie opisać musiałbym tutaj od razu zamieścić sporą cześć kursu. Dlatego jeśli uważasz, że treść nie jest tragiczna i jednak warto spróbować tego programowania to zachęcam do śledzenia bloga i zostawienia Like na Facebooku w oczekiwaniu na kolejne części ;)
3. Dodatek – Visual Studio
Gdzieś na początku tekstu wspomniałem, że najczęściej wybieranym IDE dla języka C# jest Visual Studio. Jeśli wcześniej nie miałeś z nim do czynienia to w tym miejscu postaram się pokazać w skrócie jak wygląda instalacja i uruchomienie pierwszego projektu w tym środowisku.
Ponieważ nie ma co zawracać sobie głowy zbyt starymi wersjami omówię tutaj wersję Visual Studio 2013 Community. Żeby ją pobrać wejdź na stronę https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx z której pobierzesz instalator online czyli taki, który będzie pobierał potrzebne pliki w trakcie instalacji.
Instalację zaczynamy od wybrania katalogu docelowego, zaakceptowania licencji i zrezygnowania z brania udziału w programie pomocy w zwiększaniu jakości Visual Studio (chyba, że ktoś lubi się dzielić swoją konfiguracją i pojawiającymi się błędami z producentem).
Po przejściu dalej można wybrać dodatkowe funkcjonalności. Jeśli chcesz jedynie uczyć się samego języka i ewentualnie zająć się aplikacjami desktopowymi to możesz wszystkie pozycje spokojnie odznaczyć. Tutaj od razu taka uwaga. Nawet jeśli wybierzesz, że chcesz zainstalować Visual Studio na innej partycji niż systemowa to i tak jest wymagane miejsce na dysku C: ponieważ instalator i tak w systemowych katalogach umieści sporo plików, które najwidoczniej nie mogą być gdzie indziej. Dlatego w sumie nie opłaca się wybierać innego katalogu niż ten domyślnie zaproponowany na początku instalacji.
Jeśli nie masz szybkiego łącza i jeszcze szybszego komputera to przed kliknięciem przycisku „Install” polecam zastanowić się jak zagospodarujesz następne godziny w oczekiwaniu na zakończenie procesu instalacji. Podpowiem tylko, że patrzenie na pasek postępu nudzi się maksymalnie po godzinie.
Kiedy instalacja dobiegnie końca możesz strzepnąć kurz z klawiatury, zgolić zapuszczoną w trakcie oczekiwania brodę i zdecydować czy chcesz od razu utworzyć nowe microsoftowe konto ewentualnie zalogować się na to, które już posiadasz (np. mając telefon z Windows Phone, Windowsa 8, albo po prostu konto założone z innego powodu) lub na razie wolisz się nie logować i uruchomić IDE testowo, jednak po krótkim czasie Microsoft przypomni Ci, że jeszcze nie oddałeś im swoich danych i będzie Ci o tym przypominał.
Na koniec jeszcze został wybór wersji kolorystycznej (ja osobiście preferuję styl ciemny) oraz ewentualnie wybranie pod jaki typ aplikacji Visual powinien skonfigurować GUI, ale ponieważ dopiero się uczysz to myślę, że zostawienie opcji „General” będzie dobrym pomysłem.
Nareszcie można uruchomić świeżutkie IDE! Jeśli wybrałeś ten sam schemat kolorów co ja to Twoim oczom ukaże się widok podobny do poniższego
Pora utworzyć nowy projekt. W tym celu albo na stronie startowej wybierz „New project…”, albo z menu wybierz „FILE->New->Project…”. Pojawi się poniższe okno.
Znajdź w drzewku po lewej stronie „Visual C#”, rozwiń go, a następnie wybierz „Windows Desktop” i na liście pośrodku odszukaj pozycji „Console Application”.
Wpisz nazwę projektu w polu „Name”, wybierz folder, w którym chcesz umieścić wszystkie pliki z nim związane i ewentualnie podaj nazwę solucji ( „Solution name” ). Solucja jest zbiorem powiązanych ze sobą projektów. Dzięki temu można w prosty sposób mieć w jednym miejscu otworzony projekt naszej aplikacji i np. projekty powiązanych z nią naszych dodatkowych bibliotek. Domyślnie nazwa solucji jest taka sama jak nazwa projektu i nie musisz jej zmieniać. Zaznaczając lub odznaczając pole „Create directory for solution” wybierasz czy chcesz żeby został utworzony w wybranym wcześniej katalogu nowy katalog o nazwie takiej jaką ma solucja, a dopiero w nim katalog dla konkretnego projektu, czy chcesz od razu mieć pliki solucji na poziomie wskazanego przez Ciebie folderu. Po wybraniu „OK” poczekaj chwilę aż projekt zostanie utworzony i zobaczysz na ekranie otwarty projekt i automatycznie wygenerowany plik z podstawowym kodem źródłowym.
Visual Studio od razu dodało w Twoim projekcie klasę Program, w której znalazła się funkcja main() omawiana wcześniej. Możesz albo ją uzupełnić o brakujący kod, albo napisać całość od nowa, albo usunąć ten plik na liście po prawej stronie i utworzyć nowy plik z klasą klikając prawym przyciskiem na nazwie projektu (u mnie jest to „HelloWorld”) i wybierając „Add->New item…” wtedy pojawi się okno dodawania nowego pliku. Nie przejmuj się mnogością możliwych do wyboru pozycji, znajdź po prostu tą opisaną jako „Class”, wpisz w pole „Name” nazwę klasy (o klasach wspomniałem w części omawiającej pierwszy Hello World), która będzie jednocześnie nazwą pliku i kliknij „Add” aby nowy plik został dodany do Twojego projektu. Visual Studio wygeneruje automatycznie podstawowy kod nowej klasy jednak możesz go dowolnie modyfikować.
Kiedy masz gotowy kod możesz go skompilować i uruchomić wybierając w górnej części GUI przycisk „Start” z zieloną strzałką lub wciskając F5 na klawiaturze. W tym momencie Twój projekt zostanie skompilowany i jeśli nie zawiera błędów to również uruchomiony.
Gratuluję, właśnie poznałeś podstawy języka C# i korzystania z Visual Studio! Już niebawem zabierzemy się za kolejne zagadnienia i w końcu Twoje programy będą mogły stawać się coraz bardziej użyteczne :)
Zapowiada się ciekawie. Będę tutaj częściej zaglądać.
dzieki za pomoc przydalo mi sie na programowaniu
Pingback: Kurs C# pod Unity3d dla leniwych #1 - Wstęp | mWin
Cześć,
Mam 12 lat i bardzo chcę się nauczyć programować. Trafiłem na ten kurs, ale mam problem już na samym początku.
Po instalacji VS2015 Community nie mam możliwości wyboru Console Application, nie mogę ćwiczyć. Proszę pomóżcie.
Jacek
Na pewno w kategorii „C#” nie masz „Console application”? Bo jedyny problem jaki znam to problem z „Console application” ale dla aplikacji w języku C++.
Zainstaluj sobie VS17 Comunity, załóż konto na MS (bez konta nie będzie działał) i nie będzie z tym problemu.
Zeby okno wykonywanego programu się błyskawicznie nie zamknęło, jako ostatnią instrukcję Main wstaw:
Console.ReadKey();
Ale o tym już wcześniej autor artykułu wspomniał.
Jacku VS code to nie to samo co on używa. Używa on Microsoft Studio Code jest to mylące, ale są to dwa osobne programy.
Ja mam 13 lat i też uczę się programować, ale błędów nie spotkałem.
Przeinstalowałem VS i się pojawiło, ale kiedy zakładam nowy projekt wyskakuje taki error:
„Project 'test’ could not be opened because the Visual C# 2015 compiler could not be created. Please re-instal Visual Studio.”. Czy z moim lapkiem jest coś nie tak?
Wszystko fajnie… oprócz tej czcionki. Noszę okulary, ale żeby to przeczytać muszę mrużyć oczy jak krecik… już lepiej to widać jak jest zaznaczone… :o
Zmienione ;) Teraz powinno się lepiej czytać :)
Mam problem zrobiłem wszystko co napisane (nie używając Ctrl+C i V) i problem polega na tym że konsola jak sam napisałeś wyświetla się przez chwilę i jak ten czas przedłużyć ?
Użyj na końcu kodu
Console.ReadKey();
Konsola nie zniknie póki nie wciśniesz któregoś z klawiszy.
Jest kilka dodatków co dają taki ficzer żeby program (kod) nie kończył się od razu.
Pingback: Języki programowania - Mega przewodnik po językach programowania - Kurs PHP
Jeśli chodzi o programowanie i znajomość języka C# to jestem w tej materii kompletnie zielony, ale chcę się tego nauczyć. Przydały by się kursy wideo dobrze nagrane jakościowo pod względem wideo jak i samego dźwięku audio żeby wybyło wyraźnie i głośno słychać prowadzącego kurs. Dobrze by było zrobić taki kurs wideo dla początkujących czyli objaśnienia/przykładami typu :
using System;
namespace Kurs
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(„Hello World!”);
}
}
}
Dokładnie taki kurs powstaje :) Także zachęcam do śledzenia bloga i fanpaga na Facebooku.
Hejka!
Napisałeś:
———–
Druga uwaga jest taka, że jeszcze do niedawna chcąc korzystać ze statycznych metod np. podanej wcześniej WriteLine nie mogliśmy podać w konstrukcji using również nazwy klasy jednak od wersji 6.0 języka C# możemy napisać:
using System.Console;
———
Korzystam z: Microsoft Visual Studio Community 2019 i tu to nie działa. Działa natomiast:
using static System.Console;
Pozdrawiam!
btw. Pomogli koledzy z mym analogicznym problemem:
https://stackoverflow.com/questions/69804498/using-static-method-from-other-file-without-class-name