C# - Podstawy (by Yero, 02.08.06) @ wyklady.net

11:57 <Gynvael> Po wykladzie wyklad bedzie mozna komentowac na naszym forum
11:57 <Gynvael> http://forum.wyklady.net/index.php?topic=65.0
12:00 <Yero> Wiec, witam wszystkich na moim wykladzie o c#
12:01 <Yero> Na poczatku wykladu o mowimy historie c#, troche ogolnie o nim, powiem troche o kompilatorze, a na koncu zaczenimy pisac pierwsze programy
12:02 <Yero> postaram sie wytlumaczyc wszystko jak najdokladniej
12:02 <Yero> i jeszcze z gory sorry za wszystkie byki ortograficzne
12:02 <Yero> wiec to koniec tego nudnego wstepu
12:03 <Yero> dobra teraz troche o c#
12:03 <Yero> C# jest to jezyk programowanie stworzony w lipcu 2000 roku
12:03 <Yero> programowania*
12:04 <Yero> Zostal stworzony przez ekipe Microsoftu, pod kierunkiem Andresa H.
12:04 <Yero> Jezeli chodzi o nazwe c# to pisze sie ja C Sharp (czyt. si szarp)
12:04 <Yero> Wszyscy tutaj wiemy ze # to hash
12:05 <Yero> ale ekipa Microsoftu sobie tak wymyslila, i tak ma byc
12:05 <Yero> tzn. nie mozna zmienic tej decyzji
12:06 <Yero> C# jest w pelni obiektowym jezykiem programowania
12:06 <Yero> Jest on podobny, ba nawet bardzo podobny do Javy
12:07 <Yero> Napewno widziac nazwe c# skojarzylo wam sie, ze jest to jakas odmiana C/C++, jednak malo go z nim laczy tylko skladnia jest podobna
12:07 <Yero> a czemu taka nazwa, to juz powiedzialem
12:08 <Yero> Programy napisane w c# nie sa kompilowane do "zwyklego" kodu maszynowego, jednak do takiego posredniego, ktore jest uruchamiane przez srodowisko .NET
12:09 <Yero> (jak widac nie tylko skladnia zostala pozyczona od javy:] )
12:10 <Yero> Aby, uruchamiac programy napisane dla platwormy .NET (nie tylko C#, ale Visual Basic,J#,Visual C++ mozna) potrzebny jest nam program Microsoft .NET Framework 2.0
12:12 <Yero> Przepraszam, ze tak wolno odpisuje ale odpowiadam na pytania
12:12 <Yero> Programy napisane w c# sa dopiero zmieniane na kod maszynowy przy uruchomieniu
12:13 <Yero> przez srodowisko .NET
12:13 <Yero> C# jak wspomnialem jest obiektowy
12:14 <Yero> zostaly w nim zostosowane funkcje opakowywania i rozpakowywania
12:15 <Yero> Jezeli chodzi o odpalanie programow z .NET pod unixem
12:15 <Yero> To jak zapewne wiecie prawie kazdy program ma odpowiednik Open Source
12:16 <Yero> (fakt darmowe najczesciej do kitu, ale tych co wolo unixy to jedyne wyjscie)
12:16 <Yero> Jest cos takiego jak Mono
12:16 <Yero> czyli c# pod unixem
12:16 <Yero> http://www.monodevelop.org/Main_Page
12:16 <Yero> link
12:17 <Yero> wiec to na tyle jezeli o chodzi o ogolne z c#
12:17 <Yero> ludzie pytaja mnie co to jest programowanie obiektowe
12:17 <Yero> wiec, mysle ze warto o tym powiedziec
12:18 <Yero> Wiec, wiekszosc powazniejszych aplikacji pisanych w dzisiejszych czasach napisane jest  obiektowo
12:19 <Yero> jak mowi slowo "obiektowe", odnosi sie to do obiektow, jak zapewne wiecie wszystko co nas otacza jest obiektem.
12:20 <Yero> Najczesciej jest tak, ze jak chcemy opisac jakis obiekt, to raczej trudno nam wymiec jego cechy
12:21 <Yero> wiec zdefiniujmy klase (bo w obiektowych jezykach programowanie, poslugujemy sie klasami)
12:21 <Yero> Klasa np.
12:21 <Yero> np. obiad
12:22 <Yero> nie obiad, tylko zupa pomidorowa (wiem ze smieszne ale to tylko przyklad)
12:22 <Yero> Wiec zdefiniujmy klase zupa
12:22 <Yero> jej Cechy to
12:22 <Yero> -smak
12:22 <Yero> -wyglad
12:22 <Yero> -zapach
12:23 <Yero> -gestosc
12:23 <Yero> wiec tyle nam wystarczy
12:23 <Yero> tez zalezy od tego jakiego opisu na potrzeba
12:24 <Yero> -smak dobry
12:24 <Yero> wyglad mocno czerwony
12:25 <Yero> zapach przyjemny
12:25 <Yero> -gestosc wodnista
12:25 <Yero> troche glupi przyklad ale aktualnie nie mialem lepszych pomyslow
12:26 <Yero> Smak i zapach to tylko proste typy
12:27 <Yero> ale wyglad i gestosc to obiekty
12:27 <Yero> Wiec przydalo by sie zdefiniwac te obiekty, co nie
12:27 <Yero> ?
12:27 <Yero> Wiec wyglad
12:28 <Yero> Kolor: czerwony
12:29 <Yero> dobrze tyle nam wystarczy jezeli chodzi o zdefiniowany obiekt "Wyglad"
12:29 <Yero> Zdefiniujmy teraz obiekt "Gestosc"
12:30 <Yero> Wiec, poziom gestosci: sredni
12:31 <Yero> Cechy te mozna umieszczac w zmiennym programowaniu
12:32 <Yero> Dobrze teraz opisze jak to zrobic w c#
12:32 <Yero> class zupa
12:32 <Yero> {
12:33 <Yero> zle
12:33 <Yero> class zapach
12:33 <Yero> {
12:33 <Yero>    public string smaczne
12:34 <Yero> wroc
12:34 <Yero> opinmy ta powalona zupe
12:34 <Yero> bo zle to zrobilem
12:35 <Yero> lepiejn z domem to bedzie
12:35 <Yero> class Okno
12:35 <Yero> {
12:35 <Yero>    public double Szerokosc;
12:35 <Yero>    public double Wysokosc;
12:35 <Yero>    public string Stan;
12:36 <Yero>    public void Otworz()
12:36 <Yero>    {
12:36 <Yero> Stan = "Otwarte";
12:36 <Yero> }
12:37 <Yero> public void Zamknij();
12:37 <Yero> {
12:37 <Yero> stan = "Zamkniete";
12:37 <Yero> }
12:37 <Yero> }
12:37 <Yero> class Dom
12:37 <Yero> {
12:37 <Yero> public string KolorScian
12:38 <Yero> public string KolorDachu;
12:38 <Yero> public Okno OknoDomu
12:38 <Yero> ;
12:38 <Yero> public void ZmienKolorScian(string kolor)
12:39 <Yero> {
12:39 <Yero> KolorScian = kolor;
12:39 <Yero> }
12:39 <Yero> public void ZmienKolorDachu(string kolor)
12:39 <Yero> }
12:39 <Yero> {
12:39 <Yero> KolorDachu = kolor;
12:39 <Yero> }
12:39 <Yero> }
12:40 <Yero> class KlasaGlowna // to jest klasa glowna :)
12:40 <Yero> {
12:40 <Yero> static void Main()
12:40 <Yero> {
12:40 <Yero> Drzwi drzwiJasia = new Drzwi();
12:40 <Yero> drzwiJasia.Kolor = "brązowy";
12:40 <Yero> drzwiJasia.Material = "drewno";
12:40 <Yero> drzwiJasia.Stan = "zamknięte";
12:41 <Yero> Dom domJasia = new Dom();
12:41 <Yero> domJasia.OknoDomu = oknoJasia;
12:41 <Yero> domJasia.KolorScian = "biały";
12:41 <Yero> domJasia.KolorDachu = "czarny";
12:41 <Yero> }
12:41 <Yero> }

12:42 <Yero> TO na tyle, jezeli chodzi o tom obiektowosc (wiem ze do kitu, ale nie przygotowalem sie do tlumaczenia tego zrobilem to na wasze prosby podczas wykladu)
12:43 <Yero> Wiec przejdzmy do bardziej interesujacej czesci wykladu
12:43 <Yero> czyli zaczniemy pisac proste programy
12:43 <Yero> Ale najpierw troche o kompilatorze
12:44 <Yero> Wiec, pod Windowsem bedziemy korzystac z Microsoft Viusal C# 2005 Express Edition
12:44 <Yero> Jednak moglismy tez wybrac Borland C#
12:44 <Yero> Pod linuksem mamy Mono
12:45 <Yero> Jednak w tym wykladzie bedziemy poslugiwac sie Visual Studio
12:46 <Yero> Wiec stworzmy nowy projekt (File - New Project)
12:46 <Yero> Pojawilo sie nam okienko w ktorym mozemy wybrac jakiego typu ma byc to projekt
12:47 <Yero> Mamy do wyboru Windows Aplication,Class Library,Console Aplication,Empty Project,Screen Saver,Movie Collection
12:48 <Yero> My wybieramy Console Aplication
12:49 <Yero> i pojawil nam sie Edytor kodu
12:49 <Yero> Dodam, ze Microsoft Visual Studio dysponuje jednym z najlepszych kompilatorow
12:49 <Yero> Przekonacie sie o tym programujac w C#
12:50 <Yero> wiec na poczatek kasujemy wszystko to co nam wygenerowal kompilator
12:50 <Yero> i zaczniemy pisac pierwszy program w C#
12:51 <Yero> Na poczatek moze tak bardziej tradycyjnie czyli hello world
12:51 <Yero> class WitajSwiecie
12:51 <Yero> {
12:51 <Yero>     static void Main()
12:51 <Yero>     {
12:51 <Yero>         System.Console.WriteLine("Hello world !");
12:51 <Yero>         System.Console.ReadLine();
12:51 <Yero>     }
12:51 <Yero> }

12:52 <Yero> Jest to naprostrzy program w c#
12:53 <Yero> Wiec, zeby stworzyc ten program musielismy stworzyc nowa klase "WitajSwiecie"
12:53 <Yero> Wiec przypatrzcie sie instrukcji System.Console.WriteLine
12:54 <Yero> Odpowiada ona za wypisanie tekstu na konsoli
12:54 <Yero> Wiec, "System" to przestrzen nazw, ktora dalo by sie porowna do jakiegos zbioru matryc
12:54 <Yero> tzn. Klas
12:55 <Yero> "Console" to klasa w ktorej znajduje sie definicja "WriteLine"
12:55 <Yero> jezeli chodzi o System.Console.ReadLine();
12:56 <Yero> ta instrukcja odpowiada, ze to zeby program po skompilowanie "nie mignol" tylko czekal na wcisniecie "ENtera"
12:57 <Yero> Wiec, skompilujmy program wciskajac klawisz F5
12:57 <Yero> jak komus jakims cudem F5 nie dziala
12:58 <Yero> to z menu wybieramy Debug - Start Debuging
12:58 <Yero> i tak wlasnie program zostal skompilowany!
12:58 <Yero> Wiec, warto wspomniec ze W Klasie Console znajduje sie definicja Write
12:59 <Yero> czym sie rozni od WriteLine?
12:59 <Yero> tym ze po wpisaniu tekstu kursor do nastepnej lini nie przechodzi
13:00 <Yero> wiec teraz w nastepnym programie posluzymy sie zmienna string
13:02 <Yero> class Echo
13:02 <Yero> {
13:02 <Yero>     string lubie;
13:02 <Yero>     public void CoLubie()
13:02 <Yero>     {
13:02 <Yero>         System.Console.WriteLine("Jakie jest twoje ulubione danie?");
13:02 <Yero>         lubie = System.Console.ReadLine();
13:02 <Yero>     }
13:02 <Yero>     public void Lubisz()
13:02 <Yero>     {
13:02 <Yero>         System.Console.Write("Fajnie ja tez lubie: ");
13:02 <Yero>         System.Console.WriteLine(lubie);
13:02 <Yero>     }
13:02 <Yero> }
13:02 <Yero> class KlasaGlowna
13:02 <Yero> {
13:02 <Yero>     static void Main()
13:02 <Yero>     {
13:02 <Yero>         Echo obiektEcho = new Echo();
13:02 <Yero>         obiektEcho.CoLubie();
13:02 <Yero>         obiektEcho.Lubisz();
13:02 <Yero>         System.Console.ReadLine();
13:02 <Yero>     }
13:02 <Yero> }

13:03 <Yero> Wiec, program pyta uzytkownika jakie jest jego ulubione danie
13:03 <Yero> Po wpisaniu program nam mowi ze tez to lubi ;-)
13:03 <Yero> Jak nazwa mowi KlasaGlowna w naszym programie jest "klasaGlowna"
13:04 <Yero> zawiero ona metode "Main"
13:05 <Yero> W ktorej wewnatrz tworzymy obiekt klasy Echo i wykonujemy jej metody
13:05 <Yero> Wiec troche o tym kodzie
13:05 <Yero> linijka
13:05 <Yero> napis = System.Console.ReadLine();

13:06 <Yero> odpowiada za to zeby czekac na wpisanie tekstu, i po w pisaniu tekstu do stringa leci wpisany tekst
13:06 <Yero> co pozniej pozwala na jego wyswietlenie
13:06 <Yero> :)
13:07 <Yero> slowo new sluzy do tworzenia obiektow na podstawie klas
13:09 <Yero> Wiec to wlasciwie tyle jezeli chodzi o te najbardziej "Podstawowe Podstawy"
13:09 <Yero> Jak chcecie moge prowadzic wyklad dalej, ale nie wiem czy chcecie