You are on page 1of 45

01. "Programowanie" - z czym to si je?

Zarwno w Internecie, jak i wrd dostpnych ksiek na rynku, mao jest pozycji, ktre skierowane s do
pocztkujcych programistw - pocztkujcych w prawdziwym tego sowa znaczeniu. Moim celem byo napisanie
kursu jzyka C# skierowanego wanie do takich osb. Zadanie z pocztku wydawao si proste, jednak z
upywem czasu zauwayem, e chyba atwiej pisze si o rzeczach bardziej zaawansowanych. Wiele razy apaem
si na tym, e nie tumaczyem podstawowych poj potrzebnych do zrozumienia danego zagadnienia jednak
chyba za duo przebywam w towarzystwie innych programistw i komputerw J . Mam nadzieje, e uda mi si
przekaza minimum wiedzy potrzebne do rozpoczcia samodzielnej przygody z programowaniem. Ze wzgldu na
ograniczon objto kursu, a zarazem prb jak najdokadniejszego tumaczenia podstaw programowania, wiele
wanych aspektw zostanie pominitych. W przypadku trudnoci w zrozumieniu niektrych czci, bd
ewentualnych bdw zachcam do udzielania si na forum CentrumXP.pl. Postaram si na bieco
wprowadza poprawki.

Programowanie czyli tworzenie aplikacji


Programowanie to pisanie instrukcji, ktre ma wykonywa komputer. Niestety wspczesne komputery nie znaj
jzyka czowieka, a wic to my musimy pozna jzyk jakim posuguje si komputer. Komputer rozumie kod
maszynowy, czyli cig 1 i 0. Cae szczcie my nie musimy go poznawa. A wic jak porozumie si z tym
tajemniczym urzdzeniem? Do tego celu powstay jzyki programowania oraz kompilatory. Jzyk programowania
skada si ze sw, ktre jestemy w stanie zrozumie, a dokadniej nauczy si jakie dziaanie powoduje dane
sowo. Operujc pewn pul tych wyrazw, jestemy w stanie pisa programy komputerowe, a cilej rzecz
ujmujc kod rdowy, ktry na kod maszynowy (jedynki i zera) tumacz kompilatory.

Algorytm
Algorytm to sposb na osignicie jakiego celu. Program komputerowy realizuje zawsze jaki algorytm. W
uproszczeniu program komputerowy skada si z danych oraz instrukcji, ktre na tych danych operuj. My take
co chwila wykonujemy jaki algorytm. Przykadem moe by gotowanie obiadu:
Cel:
Dane:

gotowy obiad
skadniki

Instrukcje: - we skadniki
- obierz ziemniaki
- pokrj miso
-
Wynik:

gotowa potrawa

Co prawda tego za nas program komputerowy nie zrobi (moe w przyszoci J ), ale inne zadania jak najbardziej.
Cel:
Dane:

oblicz wynik
7i8

Instrukcje: dodaj
Wynik:

15

Program, ktry realizuje takie zadanie bdzie wyglda w wikszoci jzykw podobnie, dlatego posu si
kodem uoglnionym (nie napisanym w konkretnym jzyku) tzw. pseudokodem. Program komputerowy
wykonuje instrukcje w kolejnoci takiej samej jak by czyta tekst, czyli od gry do dou i od lewej do prawej
strony.

Dodaj
{
Zwr 7 + 8
}
Dodaj

Powyej mamy instrukcje: Dodaj, Zwr , +, oraz dane: 7 i 8. Pierwsze 4 linijki to definicja instrukcji
Dodaj.
Czym jest definicja?
Zacznijmy od tego, e jzyk programowania oprcz swek podstawowych, takich jak np. Zwr, pozwala nam
definiowa wasne instrukcje skadajce si z podstawowych. Mona by to porwna do tworzenia nowych
wyrazw w jakim jzyku. Moe wanie tak powstao sowo gotowa J Zamiast wypowiada ca sekwencj
zda:

Obierz ziemniaki,
Wlej wod do garnka,
Posl wod

Wystarczy, e powiemy Ugotuj ziemniaki. Tak samo w C# moemy ze swek podstawowych stworzy now
instrukcj. Tak wic definiujc instrukcj Dodaj moemy jej pniej uy wielokrotnie (robimy to w linijce
pitej), tak samo jak instrukcji podstawowych.

Zmienne
Aby nasze programy byy uniwersalne musimy zapewni im interakcj z uytkownikiem, czyli moliwo
komunikacji. Przykad:
Cel:
Dane:

dodaj dwie liczby


XiY

Instrukcje: - pobierz dane


- dodaj liczby
Wynik:

X+Y

Poniej znajduje si program w pseudokodzie, ktry najpierw definiuje now instrukcj dodajc dwie liczby, a
nastpnie pobiera dane od uytkownika i je dodaje.

Dodaj(zmienna1, zmienna2)
{
Zwr zmienna1 + zmienna2
}
X = Pobierz liczb
Y = Pobierz liczb
Dodaj(X, Y)
X oraz Y to zmienne, czyli pojemniki na dane. Dane mona do nich wkada, wyjmowa lub podmienia. W
definicji instrukcji Dodaj okrelamy, e bdziemy podawa jej dwie zmienne (zmienna1 oraz zmienna2), a
nastpnie zwracali ich sum. Zmienne podawane jako dane wejciowe dla instrukcji nazywaj si parametrami i w
przypadku mnogiej ich iloci rozdzielane s przecinkami. Nastpnie do zmiennej X wkadamy liczb pobran od
uytkownika. To samo robimy ze zmienna Y. Na koniec nakazujemy instrukcji Dodaj doda zawartoci
zmiennych X oraz Y. Wracajc do swka gotowa, moemy sobie wyobrazi, e te otrzymuje dwie zmienne:

co ugotowa,
jak ilo.

Definicja wygldaaby tak:

Gotuj(co, jak)
{
Obierz co,
Wlej wod do garnka,

Nastpnie pobranie danych od uytkownika.

zmienna_potrawa = Podaj co mam ugotowa


zmienna_ilo = Podaj ile
Teraz moemy wykona instrukcj.

Gotuj(zmienna_potrawa, zmienna_ilo)
Jak pewnie kady zauway nazwy zmiennych s rne. W C#, trzymajc si kilku zasad, zmienne moemy
praktycznie nazywa dowolnie.

Prawdziwy program w C#
using System;
namespace PierwszyProgram {
class NaszaKlasa
{
static int Dodaj(int zmienna1, int zmienna2)
{
return zmienna1 + zmienna2;
}
static void Main(string[] args)
{
string x = Console.ReadLine();
string y = Console.ReadLine();
int wynik = Dodaj(int.Parse(x), int.Parse(y));
Console.WriteLine(wynik);
}
}
}
Niestety nie wyglda tak prosto jak pseudokod ale mam nadziej, e niedugo wszystko si wyjani (w kocu to
dopiero pierwsza cz z dwudziestu). W tej chwili wystarczy jak wychwycimy kilka instrukcji, ktre odpowiadaj
tym z pseudokodu.
Definicja instrukcji:

static int Dodaj(int zmienna1, int zmienna2)


{
return zmienna1 + zmienna2;
}
Pobranie danych do zmiennych:

int x = Convert.ToInt32(Console.ReadLine());
int y = Convert.ToInt32(Console.ReadLine());
Pobranie danych do zmiennej wynik. Danymi jest wynik dziaania instrukcji Dodaj.

int wynik = Dodaj(x, y);


Instrukcja wywietlajca wynik na monitorze:

Console.WriteLine(wynik);
W miar postpw czynionych podczas nauki stopniowo wszystko powinno stawa si zrozumiae.

02. Programowanie obiektowe


OOP (ang. object-oriented programming) czyli programowanie obiektowe.
Wikszo wspczesnych aplikacji pisana jest w jzykach obiektowych. Czym zatem s te obiekty? Czsto
spotykam si ze stwierdzeniem, e wszystko jest obiektem. Wystarczy tylko rozejrze si wok siebie eby si z
tym zgodzi. Szklanka, yka, st, szafka itd. To wszystko s obiekty. Obiekty skadaj si z innych obiektw. Np.
dom skada si z dachu, drzwi, okien.
Drzwi z klamki, zawiasw itd. W zalenoci od potrzeb, powizania midzy obiektami moemy rozpatrywa na
rnych poziomach. Moemy take wyrni pojcie klasy. Klasa okrela nam typy obiektw, ale ich nie
konkretyzuje np. Ja jest obiektem, a czowiek to klasa. Inaczej mwic, Ja jest obiektem klasy czowiek. Dom
Jasia jest obiektem klasy Dom.
A co to ma wszystko wsplnego z programowaniem?
Jak si przekonamy, bardzo duo. Programujc w jzykach obiektowych moemy nasze programy skada z
obiektw jak z klockw.

Obiekty a programowanie
Gdy prbujemy opisa jaki obiekt z otaczajcej nas rzeczywistoci trudno nam wymieni jego wszystkie cechy. W
zasadzie jest to niemoliwe. Programujc, nie moemy sobie na to pozwoli, tak wic obiekty w naszych
programach musz by cile zdefiniowane. Musimy wiedzie z jakich cech si skadaj i jakie wartoci maj te
cechy, dlatego naley zdecydowa si jakie cechy s wane i umieci je w definicji klasy. Pozostae cechy naley
odrzuci
Zdefiniujmy wic klas Dom:
Cechy: - kolor cian
- kolor dachu
- drzwi
- okno

Tyle nam wystarczy, a wic sami decydujemy jak dokadnego opisu nam potrzeba. Definicja klas powinna by
adekwatna do celu jaki chcemy osign, np. jeli w naszym programie bdziemy musieli rozrnia obiekty klasy
Dom po kolorze cian, to tylko ta cecha nam wystarczy, pozostae bd zbdne.
Zdefiniujmy obiekt klasy Dom:
Dom Jasia
Kolor cian:

biay

Kolor dachu: czarny


Drzwi:

drzwi Jasia

Okno:

okno mae

Kolory to proste typy, ktre nie s obiektami. Jednak drzwi i okna to te obiekty, a wic potrzeba nam definicji
klas: Drzwi oraz Okno.

Drzwi
Cechy: - materia
- kolor
- stan
Okno
Cechy: - szeroko
- wysoko
- stan

A nastpnie obiekty:
Drzwi Jasia
Materia:

drewno

Kolor:

brzowy

Stan:

zamknite

Okno mae
Szeroko: 0.5 metra
Wysoko: 1 metr
Stan:

zamknite

Cechy moemy utosamia ze zmiennymi w programowaniu (w klasie s to tzw. pola). Dodatkowo obiekt moe
wykonywa ustalone czynnoci, np. drzwi i okna mog si otwiera. Moemy take zaoy, e dom potrafi
zmienia swj kolor. Funkcje te nazywamy metodami.
Ostateczne definicje klas wygldaj nastpujco:
Dom
Pola:

- kolor cian
- kolor dachu
- drzwi
- okno

Metody: - zmie kolor cian


- zmie kolor dachu
Drzwi
Cechy:

- materia
- kolor
- stan

Metody: - zamknij
- otwrz
Okno
Cechy:

- szeroko
- wysoko
- stan

Metody: - zamknij
- otwrz

Jak to zrobi w C#?


Przyjrzyjmy si programowi w C#, ktry stworzy nam taki wasny mini-wiat. Przypuszczam e nie bdzie atwo
go zrozumie, poniewa na tym etapie nie posiadamy wystarczajcej wiedzy. Wystarczy, e oswoimy si z
widokiem kodu napisanego w C#, a w ramach pracy domowej moemy sprbowa przeanalizowa linijk po
linijce i zastanowi si co mog znaczy. Na dokadne opisanie poszczeglnych instrukcji przyjdzie czas w
dalszych czciach kursu.

class Drzwi
{
public string Material;
public string Kolor;
public string Stan;
public void Otworz()
{
Stan = "Otwarte";
}
public void Zamknij()
{
Stan = "Zamknite";
}
}
class Okno
{
public double Szerokosc;
public double Wysokosc;
public string Stan;
public void Otworz()
{
Stan = "Otwarte";
}
public void Zamknij()
{
Stan = "Zamknite";
}
}
class Dom
{
public
public
public
public

string KolorScian;
string KolorDachu;
Drzwi DrzwiDomu;
Okno OknoDomu;

public void ZmienKolorScian(string kolor)


{
KolorScian = kolor;
}
public void ZmienKolorDachu(string kolor)
{
KolorDachu = kolor;
}
}

class KlasaGlowna
{
static void Main()
{
Drzwi drzwiJasia = new Drzwi();
drzwiJasia.Kolor = "brzowy";
drzwiJasia.Material = "drewno";
drzwiJasia.Stan = "zamknite";
Okno oknoJasia = new Okno();
oknoJasia.Szerokosc = 0.5;
oknoJasia.Wysokosc = 1;
oknoJasia.Stan = "zamknite";
Dom domJasia = new Dom();
domJasia.DrzwiDomu = drzwiJasia;
domJasia.OknoDomu = oknoJasia;
domJasia.KolorScian = "biay";
domJasia.KolorDachu = "czarny";
}
}

03. Do czego potrzebne jest nam Visual


Studio 2005
Wiemy ju, co to znaczy programowa. Rozumiemy pojcia jzyk programowania, program, kompilator i zapewne
kilka innych. Czym jednak jest Visual Studio 2005?
Jest to tak zwane rodowisko programistyczne rozbudowana aplikacja do tworzenia oprogramowania. Oprcz
kompilatora, zawiera m.in. edytor tekstowy, w ktrym to wpisujemy nasz kod programu. Nie jest to zwyky
edytor, jak np. notatnik, ale bardzo rozbudowane narzdzie, ktre koloryzuje nam tekst (uatwia to
rozpoznawanie typw wyrazw kolory s przypisane do konkretnych ich rodzajw), formatuje kod rdowy
(robi np. wcicia dla poprawy czytelnoci) oraz wykonuje wiele innych czynnoci. Mimo e Visual Studio 2005 to
bardzo rozbudowana aplikacja, nie powinnimy si obawia, poniewa moemy pisa nasze wasne programy ze
znikom znajomoci tego rodowiska. Oczywicie w miar nauki naley zapoznawa si z tym narzdziem, aby
nasze programy staway si coraz lepsze i ciekawsze, a nasza praca wydajniejsza.

Nasze rodowisko pracy - Visual C# 2005 Express Edition


W naszym kursie bdziemy uywa Visual C# 2005 Express Edition. Aplikacja ta to uproszczone rodowisko
programistyczne, przeznaczone dla pocztkujcych programistw i hobbystw zainteresowanych tworzeniem
aplikacji w jzyku C#. Visual C# 2005 Express Edition posiada wiele takich samych funkcji, jak pena wersja
Visual Studio 2005, dlatego moe stanowi swoiste wprowadzenie do tego potnego rodowiska.

Ile to kosztuje?
Kto kiedy powiedzia, e nie ma nic za darmo. By moe jest to prawda, ale fakt jest taki, e za C# 2005
Express Edition nie musimy NIC paci! Uywa za darmo moemy tego rodowiska a do 6 listopada 2006 roku.
Przez tak dugi okres czasu nie tylko moemy doskonale pozna to narzdzie i nauczy si programowa, ale
rwnie z jego pomoc stworzy bardzo ciekawe aplikacje.
W dalszej czci kursu nie bd uywa penej nazwy Visual C# 2005 Express Edition lecz Visual C#.

Wymagania systemowe
Oprcz Visual C# potrzebujemy .NET Framework w wersji 2.0. Jest to pakiet zawierajcy potrzebne biblioteki i
rodowisko uruchomieniowe do uruchamiania aplikacji napisanych za pomoc Visual C#. Musimy zda sobie
spraw z tego, e Visual C# to narzdzie pomagajce nam pisa aplikacje .NETowe, ale to .NET jest sercem
aplikacji, ktre bdziemy pisa. Rwnie dobrze moglibymy napisa nasz program w notatniku, zapisa go do
pliku tekstowego i skompilowa go kompilatorem korzystajc z linii polece.
Wymagania:
Konfiguracja minimalna:

Procesor

System operacyjny

Procesor Pentium 600 MHz

Konfiguracja rekomendowana:

Procesor Pentium 1 GHz

Microsoft Windows 2003 Server


Windows XP
Windows 2000

Konfiguracja minimalna:

128 MB

Pami RAM
Konfiguracja rekomendowana:

256 MB

Visual C#:

160 MB dla instalacji

.NET Framework:

240 MB dla instalacji

Twardy dysk
Opcjonalnie: Z MSDN Express:

400 MB dla instalacji

Z SQL Server Express:

130 MB dla instalacji

Minimalna:

800 x 600 256 kolorw

Rozdzielczo monitora
Rekomendowana:

1024 x 768 High Color - 16-bit

Instalacja
Program moemy cign ze stronyhttp://www.centrumxp.pl/download/update/update.php?id=996 ,
a nastpnie zainstalowa na naszym komputerze. Plik zawierajcy instalk Visual C# 2005 Express Edition
to vcssetup.exe.
Aby rozpocz instalacj musimy by podczeni do Internetu, poniewa waciwe pliki instalacyjne bd cigane
w trakcie instalacji. Po rozpoczciu powinno pojawi si okno

W przypadku gdy w naszym systemie operacyjnym nie ma zainstalowanych wymaganych skadnikw, powysze
okno moe si nie pojawi, a zamiast niego ujrzymy informacj co naley zainstalowa i jak to zrobi.
Gdy wszystko bdzie ju jak naley i powysze okno pojawi si przed naszymi oczami, klikamy Next.

Po przeczytaniu warunkw licencji, zaznaczamy checkbox akceptujcy te warunki, a nastpnie klikamy Next.

Nastpnie musimy wybra co instalujemy dodatkowo.

MSDN 2005 Express Edition to pomoc, ktra integruje si z Visual C#. Moemy w niej znale opis bibliotek
jzyka C# oraz duo przykadw uycia klas. Jeli posiadamy szybkie cze internetowe i nie jest problemem dla
nas cignicie 248 MB danych, to warto MSDN zainstalowa.
SQL Server 2005 Express Edition x86 to okrojony system baz danych. W naszym kursie nie bdziemy z niego
korzysta, tak wic ja pomin go przy instalacji.
Po klikniciu Next przechodzimy do nastpnego okna.

Wybieramy miejsce, gdzie na dysku chcemy zainstalowa Visual Studio, a nastpnie klikamy Next.

Instalacja przebiegnie tym szybciej, im szybsze cze internetowe posiadamy.

Po skoczonej instalacji moemy dokona aktualizacji systemu oraz rejestracji Visual C# 2005 Express Editio
przez Internet. Jeli nie zarejestrujemy produktu przez 30 dni, to stracimy moliwo korzystania z niego.
Po udanej instalacji moemy uruchomi Visual C#
Start -> Programy -> Visual C# 2005 Express Edition

Nadszed wic czas zapoznania si ze rodowiskiem, jednak uczynimy to w nastpnej czci kursu.

04. Konfiguracja i obsuga C# 2005 Express


Edition
W tej czci kursu skonfigurujemy nasze rodowisko pracy jakim jest Visual C# oraz nauczymy si je obsugiwa.
Swobodne poruszanie si po tym narzdziu gwarantuje nam efektywno pracy. Wiedza i umiejtnoci
przychodz z czasem, a najlepsz metod na nauk jest praktyka, wic do dziea!

Solution i Projekty
Aplikacje w .NET tworzone s w ramach project, czyli projektu. W zasadzie projekt jest to pojedynczy program.
Jednak nie jest to element znajdujcy si najwyej w hierarchii, ktra istnieje w .NET 2.0. Elementem takim jest
solution (niestety, nie mam pojcia jak przetumaczy to sowo na jzyk polski, aby miao sens, a w takich
wypadkach wyznaj zasad, e naley pozostawi oryginaln wersj J ). Solution to jakby najwiksza paczka, w
ktrej znajduje si nasz program, a wic jeden lub wicej projektw. Solution moemy utosamia z systemem
informatycznym, czyli nie pojedyncz aplikacj, ale wiksz ich iloci. W naszym przypadku bd to systemiki.
Stwrzmy wic pierwszy projekt.

Wybieramy opcj New Project z menu File.

Nastpnie musimy wybra typ projektu spord 6 typw. Poniewa w tym kursie skupiamy si tylko na nauce
jzyka C#, bdziemy tworzy tylko aplikacje konsolowe (Console Application). Musimy take nada nazw dla
naszego projektu. Na obrazku powyej jest to MojaPierwszaAplikacja.

Powyszy obrazek przedstawia nam okno, z ktrym bdziemy mieli najwicej do czynienia, czyli edytor Visual
C# Editor.
Edytor skada si z wielu zakadek, ktre moemy dowolnie chowa bd rozwija i zwija.
Jeli klikniemy znaczek X, znajdujcy si na kadej zakadce w prawym grnym rogu, to dana zakadka zostanie
zamknita. Aby ponownie otworzy zakadk, korzystamy z menu View.

Jeli na ekranie mamy otworzonych duo zakadek, nasze rodowisko moe przesta by wygodne w
uytkowaniu. Sytuacja taka przedstawiona jest na obrazku poniej.

W takiej sytuacji zakadka z kodem rdowym jest za maych rozmiarw, i pisanie programu moe sta si
bardzo niewygodne. Z pomoc przychodzi nam zwijanie/rozwijanie zakadek. Obok przycisku X znajduje si
przycisk z ikon przedstawiajc pinesk. Klikajc go, moemy zwija i rozwija zakadki.

Najedajc na pasek tytuowy zakadki, a nastpnie wciskajc lewy klawisz myszki, moemy dowolnie przesuwa
zakadk. W ten sposb jestemy w stanie dowolnie rozmieci zakadki na ekranie.

Gwne zakadki
Edytor
Najwaniejsz dla nas zakadk jest zakadka edytora tekstowego, w ktrym bdziemy pisa kod programu.
Wywietla on zawarto plikw tekstowych. Zazwyczaj bdzie to kod rdowy naszych programw. Program.cs
to plik stworzony automatycznie przez Visual C#. Dodatkowo zawiera on w sobie troch kodu, ktry moemy
wykorzysta bd usun. Visual C# w zalenoci, jaki typ projektu wybierzemy, automatycznie generuje troch
typowego kodu.

Solution Explorer
Do nawigacji po strukturze naszego projektu, czyli jednoczenie po plikach, suy zakadka Solution Explorer.

Za pomoc Solution Explorer moemy dodawa nowe projekty do solution, dodawa oraz usuwa pliki,
nawigowa po strukturze i wybiera pliki, ktrych zawarto chcemy wywietli.
Dla przykadu dodajmy nowy plik zawierajcy definicj klasy.

Musimy wybra typ pliku oraz jego nazw.

W Solution Explorer pojawi si nowy plik.

W edytorze kodu rdowego moemy zobaczy zawarto pliku NowaKlasa.cs.

Mimo, e nic jeszcze nie napisalimy, to Visual C# zrobi to za nas. Jak przekonamy si w przyszoci, jest to
jedno z udogodnie oferowanych przez to rodowisko. W tym przypadku wygenerowao dla nas szkielet klasy,
czyli fragment kodu wystpujcy w kadej definicji klasy.

Zapisywanie projektu i zamykanie Visual C#


Po skoczeniu pracy z projektem musimy zapisa zmiany (powinnimy to robi w take w trakcie pracy, aby nie
utraci przez przypadek napisanego programu albo jego czci). Moemy to zrobi na dwa sposoby. Pierwszy, to
wybierajc w menu opcj File -> Save All.

Drugi, to kliknicie przycisku Save All na pasku narzdzi.

Teraz moemy zamkn Visual C# bez obawy, e utracimy napisany przez nas program.
Wczmy rodowisko ponownie, a nastpnie otwrzmy nasz projekt. Moemy to zrobi poprzez menu, w ktrym
zapamitane s ostatnio edytowane projekty.

Moemy take standardowo uy menu File -> Open Project

Nastpnie znale i otworzy plik solution (*.sln) lub projektu (*.csproj).

W ten sposb wracamy do naszych projektw.


W nastpnej czci kursu poznamy dalsze waciwoci Visual Studio C# Express Edition oraz gwne zasady
dotyczce pisania kodu rdowego programw w jzyku C#.

05. Tworzenie solution i nowych projektw


W tej czci kursu nadal bdziemy zapoznawa si z Visual C#, ale take poznamy podstawowe zasady dotyczce
pisania programw w jzyku C#.
Na pocztek stwrzmy pierwszy powany system informatyczny J
Nie chodzi mi, w tym momencie, o napisanie go od pocztku do koca, ale o przewiczenie tworzenia solution i
projektw. Tym systemem bdzie program do zarzdzania magazynem. W zasadzie nie musimy rozumie
dlaczego takie, a nie inne projekty stworz (nawet nie wiem, czy maj one sens J), poniewa celem jest
zapoznanie si ze rodowiskiem, a nie zrozumienie architektury systemu Magazyn.

Do dziea!

Nazwijmy go Magazyn.

Po stworzeniu solution i projektu, zmiemy nazw plikowi Program.cs na Magazyn.cs.

Visual C# zapyta si nas nie tylko, czy chcemy zmieni nazw pliku, ale take o nazwy elementw zwizanych z
tym plikiem.

Wybierzmy Yes. Dziki temu ,w naszym kodzie, klasa Program i wszystkie uycia jej nazwy, zastpione
zostan nazw Magazyn. Zazwyczaj pliki z rozszerzeniem *.cs zawieraj klas o takiej samej nazwie jak nazwa
pliku. Powinnimy trzyma si tej zasady i stara si, eby w jednym pliku znajdowaa si definicja jednej klasy.
W tej chwili okno edytora zawiera nastpujcy kod rdowy.

Dodajmy now klas do projektu Magazyn.

Nazwijmy j InterfejsUzytkownika. Solution Explorer, w tej chwili, zawiera nastpujce pliki.

Jeli chcielibymy napisa nasz program, to klasa Magazyn posuyaby jako gwna klasa aplikacji, a klasa
InterfejsUzytkownika definiowaaby sposb komunikacji z uytkownikiem (komunikatu, menu uytkownika itp.).
Dodatkowo potrzebowalibymy projektu, w ktrym wykonywane byoby zarzdzanie magazynem, czyli zawieraby
logik naszego systemu oraz projektu, ktry pobieraby dane z bazy danych (najprostsz baz danych mog by
pliki tekstowe). Dla przykadu stwrzmy jeden z tych projektw. Najpierw zapisujemy to co do tej pory zrobilimy
Save All a nastpnie postpujemy jak na obrazku poniej.

Musimy wybra typ projektu i jego nazw.

Typem bdzie ClassLibrary, a nazw ZarzadcaMagazynu.


Zawarto Solution Explorer w tej chwili powinna wyglda jak poniej.

W tej chwili mamy w jednym solution dwa projekty. W tym kursie raczej nie bdziemy pisa takich aplikacji,
poniewa skupimy si na samym jzyku C#, a nie na architekturze aplikacji, ale warto wiedzie, jak tego typu
rzeczy mona zrobi.
Mimo, e obydwa projekty znajduj si w jednym solution, to na razie nie moemy ich ze sob powiza, czyli z
poziomu jednego projektu uywa drugiego. Moemy to osign dodajc tzw. referencj (wskazanie na inny
projekt) do projektu. Zobrazujmy to dodajc do projektu Magazyn referencje do projektu ZarzadcaMagazynu.

Nastpnie wybieramy zakadk Project (zawiera projekty znajdujce si w solution) i dodajemy projekt
ZarzadcaMagazynu.

W Solution Explorer powinna pojawi si nowo dodana referencja.

Po dodaniu referencji, moemy w kodzie klas znajdujcych si w projekcie Magazyn uywa klas z projektu
ZarzadcaMagazynu.

Co daje nam czenie projektw w jednym solution?


W penej wersji Visual Studio 2005 moemy tworzy take inne typy projektw ni s dostpne w Visual C#
Express Edition. Przykadowo solution moe by system Biblioteka. W jego skad wchodziyby np. dwa projekty:
serwer wsppracujcy z baz danych (np. dane o ksikach, czytelnikach i wypoyczeniach) oraz strona WWW
bdca klientem (program komunikujcy si z serwerem), na ktrej mona dokona wypoyczenia ksiki.

Projekty s rnego rodzaju. Mog to by np. dynamiczna strona internetowa wykonana w technologii ASP.NET,
okienkowa aplikacja Windowsowa czy te aplikacja konsolowa (dziaajca w trybie tekstowym brak grafiki,
jedynie znaki alfanumeryczne). W tym kursie skupimy si na aplikacjach konsolowych, poniewa wietne nadaj
si do nauki podstaw jzyka C#.

Uruchamianie aplikacji
Mimo, e nie napisalimy systemu obsugujcego magazyn, to jednak chciabym ju teraz pokaza jak moemy
uruchamia pisane przez nas aplikacje.

Najpierw dopiszmy troch kodu do pliku Magazyn.cs.

using System;
using System.Collections.Generic;
using System.Text;

namespace Magazyn
{
class Magazyn
{
static void Main(string[] args)
{
System.Console.WriteLine("Hello world.");
System.Console.Read();
}
}
}
Instrukcja

System.Console.WriteLine("Hello world.");
Wypisze na ekranie napis Hello world., a instrukcja

System.Console.Read();
Bdzie czeka na nacinicie przez nas jakiego klawisza (bez tej instrukcji program skoczyby swoje dziaanie
zaraz po wypisaniu Hello Word.).
Uruchomi nasz prost aplikacje moemy poprzez klawisz Run zawierajcy ikon z zielonym trjktem.

Poprzez menu Debug - > Start Debugging lub Debug -> Start Without Debugging.

Po uruchomieniu aplikacji stworzy si plik, z ktrego pomoc moemy uruchamia nasz aplikacj. Znajduje si
on w katalogu
cieka do zainstalowanego Visual C#...\ Visual Studio 2005\Projects\Magazyn\bin\Debug
lub/oraz
cieka do zainstalowanego Visual C#...\ Visual Studio 2005\Projects\Magazyn\bin\Release
Na moim komputerze cieka jest nastpujca:
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Magazyn\bin\Debug
a plik ma nazw Magazyn.exe .
Efekt dziaania programu znajduje si poniej.

Zasady w C#
Zanim zaczniemy pisa programy, powinnimy pozna kilka podstawowych zasad dotyczcych jzyka C#.

Wielko liter ma znaczenie


Wyrazy dom oraz Dom to dla C# dwa rne sowa.

rednik koczy pojedyncz instrukcj


Kada instrukcja musi by zakoczona rednikiem. Teoretycznie nie musimy naszego kodu rozbija na wiele
linijek, tylko pisa wszystko w jednej, rozgraniczajc poszczeglne instrukcje rednikami. Jednak dla czytelnoci
kodu nie naley tak postpowa.
ZarzadcaMagazynu.Class1 NowaKlasa = new ZarzadcaMagazynu.Class1();

Komentarze
Nie kady tekst znajdujcy si w pliku jest czci kodu programu. Istnieje co takiego jak komentarze. S one
jakby notatkami sporzdzanymi przez programist. Im wicej komentarzy, tym lepiej J Naley opisywa za
pomoc komentarzy wikszo tworzonych przez nas instrukcji, poniewa za kilka dni (nie mwic ju o
miesicach czy latach) moemy nie pamita co chcielimy w danym miejscu osign. Komentarze w C#
moemy robi na kilka sposobw. W naszym kursie bdziemy stosowa tylko jeden podwjny znak ukonika
//. Wszystko co znajdzie si za tym znakiem w danej linijce bdzie komentarzem.

//To jest komentarz


//najczciej umieszcza si w nim opis kodu.
//Klasa Magazyn to gwna klasa naszej aplikacji.
class Magazyn
{
static void Main(string[] args)
{
ZarzadcaMagazynu.Class1 NowaKlasa = new
ZarzadcaMagazynu.Class1();
}
}
Moemy szybko komentowa i odkomentowywa fragmenty tekstu zaznaczajc je i klikjc przyciski

lub uywajc skrtw klawiszowych Ctrl + E , C oraz Ctrl + E , U

Bloki kodu nawiasy klamrowe


Fragmenty kodu stanowice pewn cao zawieraj si w nawiasach klamrowych. Tak cao stanowi np.
definicja klasy lub metody (patrz przykad powyej).

Formatowanie
Bardzo wan rzecz w programowaniu jest formatowanie kodu. Nie jest to sztuka dla sztuki, jakby si mogo
wydawa niedowiadczonemu programicie, ale praktyka poprawiajca czytelno naszego kodu rdowego. Na
szczcie Visual C# odwala duo roboty za nas - samo robi wcicia (akapity).
Akapity moemy zmniejsza lub zwiksza zaznaczajc fragment tekstu i klikajc przyciski

IntelliSense podpowiadacz
Visual Studio podpowiada nam podczas pisania kodu. Samo sugeruje jaki wyraz powinnimy, bd moemy, w
danej chwili napisa. Wywietla list dozwolonych w danym miejscu instrukcji. Podpowiadacz wcza si sam w
niektrych momentach, ale moemy wywoa go samemu naciskajc Ctrl i Space.

Podpowiada np. jakie klasy znajduj si w projekcie (a dokadniej przestrzeni nazw, o ktrej bdzie mowa w
przyszoci).

Po naciniciu klawisza Enter Visual C# uzupeni nasz kod.

Liczby dziesitne pisane z kropk


W C#, inaczej ni w jzyku polskim, piszemy liczby dziesitne. Separatorem pomidzy czci cakowit a
uamkow jest kropka, a nie przecinek. Poprawnym formatem jest np. 1.7 (jeden i siedem dziesitych).
Myl, e w nastpnej czci kursu moemy ju przej do nauki jzyka C#. Na pocztek zaczniemy od rzeczy
najwaniejszej klas.

06. Klasy i obiekty


Programy pisane w C# skadaj si z definicji klas oraz tworzonych na ich podstawie obiektw (czasami uywa si
struktur uproszczonych klas). Klasa definiuje nowy typ, a obiekty to egzemplarze tego typu. Klas mona
porwna do matrycy, a obiekty do odleww stworzonych na podstawie tej matrycy. Przyjrzyjmy si
przykadowemu programowi oraz wynikowi jego wykonania.

class HelloWorld
{
static void Main()
{
System.Console.WriteLine("Hello world !");
System.Console.ReadLine();
}
}

Po skompilowaniu i uruchomieniu programu otrzymujemy napis Hello world !. Jak atwo si domyle, za
wypisywanie tekstu odpowiedzialna jest metoda

System.Console.WriteLine("Hello world !");


System to przestrze nazw, ktr moemy porwna do pewnego zbioru matryc, czyli klas (bdzie o tym mowa
w nastpnych artykuach). Console to klasa, w ktrej znajduje si definicja metody WriteLine (take wiele
innych metod), a WriteLine to metoda jak naley wykona aby wydrukowa na ekranie jaki tekst. Tekst
traktujemy jako dan, a metod WriteLine jako instrukcj. Teksty, zwane acuchami znakowymi, umieszczamy
w cudzysowach aby kompilator potrafi je odrni.

Na razie nie przejmujmy si przestrzeniami nazw - wystarczy, e bdziemy traktowa je jako pewnego rodzaju
zbir zdefiniowanych klas. Gdyby wszystkie klasy (a jest ich w .NET tysice) znajdoway si w jednym miejscu,

nikt nie potrafiby znale mu potrzebnej, tak wic pogrupowano klasy w przestrzenie nazw. Console to gotowa
klasa stworzona dla nas przez Microsoft i umieszczona w przestrzeni System. Klasy, ktre bdziemy tworzy
moemy umieszcza we wasnych przestrzeniach. Przestrzenie, klasy, zmienne i metody tworz w pewien sposb
hierarchi: przestrzenie zawieraj klasy, te natomiast zmienne i metody. Poruszajc si po tej hierarchii stosujemy
kropki. To one, tak jak gazie w drzewach, cz klas z jej zmienn lub metod.

WriteLine a Write
Istnieje take metoda Write, rnica si od WriteLine tym, e po wypisaniu tekstu kursor nie przechodzi do
nowej linii.

atwo sprawdzi rnic wykonujc poniszy program.

class HelloWorld
{
static void Main()
{
System.Console.WriteLine("Pierwszy napis wypisany przez metod
WriteLine");
System.Console.WriteLine("Drugi napis wypisany przez metod
WriteLine");
System.Console.Write("Pierwszy napis wypisany przez metod Write");
System.Console.Write("Drugi napis wypisany przez metod Write");
System.Console.ReadLine();
}
}
Wynik jaki powinnimy otrzyma.

W kadym z powyszych programw wykonuj take metod

System.Console.ReadLine();
Jest to w pewnym sensie metoda odwrotna do WriteLine, nie wypisuje tekstu, lecz czeka na tekst, ktry
powinnimy jej dostarczy. atwo moemy to sprawdzi uruchamiajc nasz program znowu. Dopki nie
naciniemy klawisza Enter, moemy pisa po ekranie. Nacinicie klawisza Enter koczy dziaanie metody
ReadLine.

Nasz program skada si z jednej klasy HelloWorld. Wszystko znajdujce si pomidzy klamrami { } to ciao
klasy. Na ciao naszej klasy skada si tylko jedna metoda Main. Jest to bardzo wana funkcja w C#, poniewa
wykonanie wszystkich programw rozpoczyna si od tej metody.
Sowo kluczowe class okrela pocztek definicji klasy, w tym przypadku HelloWorld.
Co znacz sowa static oraz void znajdujce si przed Main ?

Na razie nie przejmujmy si nimi za bardzo. Wystarczy wiedzie, e static okrela nam, e metoda moe dziaa
mimo, e nie tworzymy obiektw klasy HelloWorld (mamy tylko jej definicj). Void natomiast okrela, e
Main nie zwraca nam adnego wyniku (gdyby to bya metoda dodajca dwie liczby to zwracaaby nam sum).

No dobrze, mamy klas, a gdzie s obiekty?

Klasa HelloWorld to klasa gwna programu, poniewa zawiera metod Main, czyli jest jakby punktem startu
naszej aplikacji. Nie tworzymy obiektw tej klasy, po prostu wykonanie programu rozpoczyna si od pierwszej
instrukcji wewntrz metody Main. Pora wic na bardziej rozbudowany przykad.

Instancje klas obiekty


Tym razem stworzymy sobie dwie klasy, jedn podobn do HelloWorld, czyli gwn klas naszego programu
oraz drug, z ktrej bdziemy tworzy obiekty wewntrz klasy gwnej.

class Echo
{
string napis;
public void WczytajNapis()
{
System.Console.WriteLine("Podaj napis.");
napis = System.Console.ReadLine();

}
public void Napisz()
{
System.Console.Write("Napisae: ");
System.Console.WriteLine(napis);
}
}
class KlasaGlowna
{
static void Main()
{
Echo obiektEcho = new Echo();
obiektEcho.WczytajNapis();
obiektEcho.Napisz();
System.Console.ReadLine();
}
}
Jak nazwa wskazuje klas gwna jest KlasaGlowna. Zawiera ona znan ju nam metod Main, wewntrz
ktrej tworzymy obiekt klasy Echo oraz wykonujemy jej metody.

Pojawio si kilka nowych rzeczy. Omwmy najpierw klas Echo. Na pocztku zawiera ona zmienn typu
string, czyli tekstow (moe przechowywa napisy). Nastpnie znajduj si dwie metody rozpoczynajce si od
sowa public. Wyraz ten oznacza dostpno elementw klasy dla innych klas. W tym przypadku mwi, e
metody ktre poprzedza s publiczne, czyli mog je wykonywa inne klasy (nie tylko klasa zawierajca definicje
tych metod). Dziki temu wewntrz klasy KlasaGlowna moemy nie tylko tworzy obiekty klasy Echo, ale te
wykona publiczne metody klasy Echo.
Nastpujca linijka

napis = System.Console.ReadLine();
oznacza, e program prosi nas o podanie tekstu (oczekuje tego metoda ReadLine()). Po naciniciu klawisza
Enter, a wic po zakoczeniu wprowadzania tekstu, to co wpisalimy lduje wewntrz zmiennej napis.
Pozostaa zawarto metod powinna by ju dla nas jasna. Przeledmy jeszcze wykonanie metody Main w
gwnej klasie. W pierwszej linijce tworzymy nowy obiekt klasy Echo i wkadamy go do zmiennej obiektEcho.
Cz

Echo obiektEcho
to deklaracja zmiennej obiektEcho, ktra moe przechowywa tylko obiekty klasy Echo. Nastpnie mamy znak
=, ktry przypisuje warto, ktr bdziemy przechowywa wewntrz naszej zmiennej. Teraz wystarczy nam
stworzy nowy obiekt klasy Echo, aby mie co zaadowa do zmiennej.

new Echo();
A oto wynik dziaania powyszego programu.

Pojawio si nowe dla nas swko new. New suy do tworzenia nowych instancji klas, a wic tworzenia
obiektw na podstawie zdefiniowanej klasy.
Wicej o tworzeniu nowych obiektw, a take o konstruktorach oraz typach referencyjnych i prostych powiemy
sobie w nastpnym artykule.

07. Tworzenie oraz inicjalizacja obiektw


W poprzednim artykule stworzylimy nasz pierwszy obiekt. Dzisiaj dowiemy si na czym polega mechanizm
tworzenia obiektw i jak uywa konstruktorw (specjalnych metod przeznaczonych do tego celu).

Definiowanie konstruktorw
Przypomnijmy sobie program z poprzedniego artykuu.

class Echo
{
string napis;
public void WczytajNapis()
{
System.Console.WriteLine("Podaj napis.");
napis = System.Console.ReadLine();
}

public void Napisz()


{
System.Console.Write("Napisae: ");
System.Console.WriteLine(napis);
}
}
class KlasaGlowna
{
static void Main()
{
Echo obiektEcho = new Echo();
obiektEcho.WczytajNapis();
obiektEcho.Napisz();
}
}
Przypominam, e teksty umieszczone w cudzysowach to acuchy znakowe. Instrukcja new Echo() nakazuje
stworzenie nowego obiektu. Echo() to konstruktor klasy, ktrej instancj chcemy stworzy. No tak, ale przecie
w klasie Echo" nie mamy zdefiniowanego adnego konstruktora. Nie jest to prawd, poniewa w kadej klasie
jest zdefiniowany domylny konstruktor, ktry moemy zastpi wasnym. Co wicej, moemy w jednej klasie
stworzy kilka konstruktorw i uywa ich w zalenoci od potrzeb.
Do czego potrzebne s nam konstruktory? Nie wystarczyoby same swko new?
Dziki konstruktorowi, moemy podczas jego uycia od razu przypisa wartoci zmiennym. Przypatrzmy si
poniszemu przykadowi.

class Echo
{
string napis;
public Echo(string nowyNapis)
{
napis = nowyNapis;
}
public void Napisz()
{
System.Console.Write("Napisae: ");
System.Console.WriteLine(napis);
}
}
class KlasaGlowna

{
static void Main()
{
Echo obiektEcho = new Echo("Napis podany w konstruktorze");
obiektEcho.Napisz();
System.Console.ReadLine();
}
}
Konstruktor zdefiniowany jest tutaj:
public Echo(string nowyNapis)
{
napis = nowyNapis;
}
Definicj konstruktora powinno poprzedza swko public, poniewa konstruktor bdzie uywany wewntrz
innych klas, ktre bd chciay powoywa do ycia obiekty klasy Echo. Istniej sytuacje, w ktrych naley
zdefiniowa prywatny konstruktor, jednak nas one na razie nie dotycz J Parametr jaki przyjmuje konstruktor to
nowyNapis. Jest to parametr typu string, a wic tekstowy. W ciele konstruktora, zmiennej napis
przypisujemy warto podan w parametrze.

Zobaczmy teraz jak bdzie wyglda wynik dziaania programu z domylnym konstruktorem.

class Echo
{
string napis;
public void Napisz()
{
System.Console.WriteLine(napis);
System.Console.ReadLine();
}
}

class KlasaGlowna
{
static void Main()
{
Echo obiektEcho = new Echo();
obiektEcho.Napisz();
}
}

Nic nie pojawio si na ekranie, poniewa nie wpisujemy adnej wartoci do zmiennej napis. Domyln
wartoci dla zmiennej typu string jest pusty tekst, a wic jeli chcemy uy zmiennej tekstowej, do ktrej
wczeniej nic nie woylimy wynik bdzie taki, jakbymy wykonali wczeniej instrukcj:

napis = "";
Spjrzmy na program z konstruktorem zdefiniowanym przez nas, ale bdcym identycznym jak domylny.

class Echo{
string napis;
public Echo()
{
}
public void Napisz()
{
System.Console.WriteLine(napis);
System.Console.ReadLine();
}
}
class KlasaGlowna
{
static void Main()
{

Echo obiektEcho = new Echo();


obiektEcho.Napisz();
}
}
Wynik nie bdzie si rni od programu z konstruktorem domylnym.
Napiszmy teraz program z kilkoma konstruktorami.

class Echo
{
string napis;
string napis2;
public Echo()
{
}
public Echo(string parametr)
{
napis = parametr;
}
public Echo(string parametr1, string parametr2)
{
napis = parametr1;
napis2 = parametr2;
}
public void Napisz()
{
System.Console.WriteLine(napis);
System.Console.WriteLine(napis2);
}
}
class KlasaGlowna
{
static void Main()
{
Echo obiekt1 = new Echo();
Echo obiekt2 = new Echo("Konstruktor z jednym parametrem.");
Echo obiekt3 = new Echo("Konstruktor z dwoma parametrami.","Drugi

parametr.");
obiekt1.Napisz();
obiekt2.Napisz();
obiekt3.Napisz();
System.Console.ReadLine();
}
}
Stworzylimy 3 konstruktory, pierwszy bezparametrowy (zmienne napis oraz napis2 otrzymuj
domylne puste wartoci), drugi z jednym parametrem przypisujcym warto zmiennej napis oraz
trzeci, ktry przypisuje wartoci obydwu zmiennym. W metodzie Main() klasy KlasaGlowna
tworzymy trzy obiekty klasy Echo, wywoujc stworzone przez nas konstruktory. Wynik dziaania
programu to wypisane wartoci znajdujce si w zmiennych napis oraz napis2 kadego z obiektw.
Wan spraw jest, aby deklaracje naszych konstruktorw byy unikalne, a wic jeli mamy 3 rne
konstruktory to wywoujc je powinno by jednoznacznie wiadomo, o ktry chodzi. Aby konstruktory
odrniay si musz mie rna liczb parametrw bd rny ich typ (np. jeden z parametrem typu
string, a drugi z parametrem typu int). W naszym przykadzie konstruktory rni si iloci
otrzymywanych parametrw. Wywoujc konstruktor z jednym parametrem typu string,
jednoznacznie wiadomo, e chodzi o drugi konstruktor.

Inicjalizacja skadowych
Jeli nasz klasa jest rozbudowana i ma wiele zmiennych oraz konstruktorw to moe si zdarzy, e w
kadym z nich bdziemy musieli przypisywa wartoci zmiennym. Duo nadmiarowej pracy
dublowanie si kodu. Moemy temu zapobiec na kilka sposobw.

Wywoanie jednego konstruktora poprzez drugi


Aby uzyska taki efekt musimy uy swka this.

class Echo
{
string napis;
string napis2;

public Echo(string parametr)


{
napis = parametr;
}

public Echo(string parametr1, string parametr2) : this(parametr1)


{
napis2 = parametr2;
}

public void Napisz()


{
System.Console.WriteLine(napis);
System.Console.WriteLine(napis2);
}
}
class KlasaGlowna
{
static void Main()
{
Echo obiekt = new Echo("Pierwszy parametr.", "Drugi parametr.");
obiekt.Napisz();
System.Console.ReadLine();
}
}
W tym przykadzie mamy dwa konstruktory, z jednym oraz z dwoma parametrami. W definicji drugiego
wywoujemy pierwszy poprzez swko this oraz przekazujemy do pierwszego pierwszy parametr. W linijce:

Echo obiekt = new Echo("Pierwszy parametr.", "Drugi parametr.");


wywoujemy drugi konstruktor (dwa parametry), ten natomiast wywouje pierwszy przekazujc mu warto
Pierwszy parametr.". Tak wic warto zmiennej napis jest ustalana w pierwszym konstruktorze, ktry zosta
wywoany przez drugi, natomiast warto zmiennej napis2 jest przypisywana w drugim konstruktorze.

Inicjalizacja w dodatkowej metodzie


Polega ona na przypisaniu wartoci do zmiennych w dodatkowej (lub w kilku) metodzie.

class Echo
{
string napis;
string napis2;

public Echo(string parametr1, string parametr2)


{
PrzypiszWartosci(parametr1, parametr2);
}
public void PrzypiszWartosci(string parametr1, string parametr2)
{
napis = parametr1;
napis2 = parametr2;
}

public void Napisz()


{
System.Console.WriteLine(napis);
System.Console.WriteLine(napis2);

}
}
class KlasaGlowna
{
static void Main()
{
Echo obiekt = new Echo("Pierwszy parametr.", "Drugi parametr.");
obiekt.Napisz();
System.Console.ReadLine();
}
}

Inicjalizacja na etapie deklaracji


W C# moemy przypisywa wartoci do zmiennych ju na etapie ich deklarowania.

class Echo
{
string napis = "Pierwszy parametr.";
string napis2 = "Drugi parametr.";

public void Napisz()


{
System.Console.WriteLine(napis);
System.Console.WriteLine(napis2);
}
}
class KlasaGlowna
{
static void Main()
{
Echo obiekt = new Echo();
obiekt.Napisz();
System.Console.ReadLine();
}
}

wiczenie
Stwrz klas Czlowiek zawierajc zmienne:

imi typu string,

nazwisko typu string,

wiek typu int.

Zdefiniuj konstruktor dla tej klasy, ktry na podstawie otrzymanych parametrw zainicjalizuje jego zmienne.

Stwrz klas gwn aplikacji, w jej metodzie Main() stwrz obiekt klasy Czlowiek przekazujc do konstruktora
odpowiednie wartoci. Wypisz na ekranie zawarto zmiennych opisujcych nowopowstay obiekt (imi, nazwisko
oraz wiek).

08. Operatory arytmetyczne


Bardzo wanym elementem w jzykach programowania s operatory. Czym s i do czego su?
Na pewno kady z nas zna podstawowe dziaania matematyczne, takie jak dodawanie, odejmowanie itd. W C#
mamy operatory arytmetyczne, ktre obsuguj obliczanie wyrae matematycznych.

+ dodawanie,
- odejmowanie,
* mnoenie,
/ dzielenie
Znajc te podstawowe operatory moemy ju napisa prosty kalkulator w C#, ktry np. dodaje dwie liczby.

class KlasaGlowna
{
static void Main()
{
string x;
string y;
double wynik;

System.Console.WriteLine("Podaj pierwsz liczb.");


x = System.Console.ReadLine();
System.Console.WriteLine("Podaj drug liczb.");

y = System.Console.ReadLine();

wynik = double.Parse(x) + double.Parse(y);


System.Console.WriteLine("Wynik: " + wynik);
System.Console.ReadLine();
}
}
Na pocztku deklarujemy zmienne. x oraz y, bdce pojemnikami na dodawane liczby. S one typu string,
poniewa metoda ReadLine zwraca nam wynik tego typu. wynik natomiast jest typu double. Operator +
dodaje wartoci zmiennych, ale tylko wtedy, gdy s one typu reprezentujcego liczby. Tak wic musimy zmienne
x oraz y przekonwertowa na typ double. W tym celu wywoujemy metod Parse, ktra jako parametr
otrzymuje tekst i zamienia go na liczb. Jeli zamiast liczby podamy np. jak literk, metoda Parse nie bdzie
w stanie zamieni jej na liczb i wygenerowany zostanie bd.

Jeli uruchamialimy nasz aplikacj w trybie debuggera (Start debugging klawisz F5 lub przycisk z zielonym
trjktem), pojawi nam si okno powiadamiajce nas o bdzie wykonania wraz z opisem.

Jeli uruchamialimy w trybie bez debuggera (Start Without Debugging Ctrl + F5 lub przez menu Debug),
pojawi nam si ponisze okno.

W naszym kursie, niestety, nie bdziemy si zajmowa zagadnieniem obsugi bdw.

Poniej wynik dziaania programu jeli podamy poprawne dane (liczby).

W liczbach, ktre podalimy (podczas wykonania programu, a nie w kodzie rdowym) cz dziesitn
oddzielamy za pomoc przecinka, a nie kropki (kropki uywa si zawsze w kodzie rdowym programu),
poniewa program rozpoznaje ustawienia regionalne na naszym komputerze.
Czsto wykorzystywanym operatorem jest modulo %. Dziaanie, ktre wykonujemy za pomoc tego operatora
bazuje na zwykym dzieleniu. Wynikiem dzielenia dwch liczb za pomoc modulo jest reszta np. 7 % 3 = 1.

Operatory przypisania
Do tej pory czsto uywalimy operatora =. Jak wiemy suy on do przypisywania wartoci do zmiennych.
Istniej operatory pochodne od =, takie jak += , -= , *= , /= , %= (wymieniem tylko najwaniejsze).

Zauwamy, e kady rozpoczyna si od operatora arytmetycznego. W zalenoci od pierwszego znaku,


przypisanie przyjmuje inna form. Standardowo = powoduje, e wartoci z prawej strony wyraenia zostaj
przypisane do zmiennej po lewej. Niestandardowe operatory przypisania powoduj, e warto aktualnie
znajdujca si w zmiennej po lewej stronie zostaje zmodyfikowana o warto z prawej wg operatora znajdujcego
si w operatorze przypisania.

Przeledmy to na przykadach.
Najpierw program z wykorzystaniem operatora =.

class KlasaGlowna
{
static void Main()
{
int wynik;
wynik = 7 + 3;
System.Console.WriteLine("Wynik: " + wynik);|
System.Console.ReadLine();
}
}
Teraz program z wykorzystaniem +=

class KlasaGlowna
{
static void Main()
{
int wynik = 7;
wynik += 3;
System.Console.WriteLine("Wynik: " + wynik);
System.Console.ReadLine();
}
}

Wynik dziaania obydwu programw jest taki sam.

Inkrementacja i dekrementacja
Na pewno syszelicie o jzyku C++. Jego nazwa powstaa ze zczenia nazwy jzyka C (poprzednik C++) oraz
operatora ++. Operator ten to operator inkrementacji. Ma on swojego odpowiednika sucego do
dekrementacji - - . Obydwa operatory s jednoargumentowe, czyli nie potrzebuj dwch argumentw tak jak
np. + czy -. Operator ++ zwiksza zmienn o 1, a - - zmniejsza. Jest to udogodnienie, aby nie pisa
caego wyraenia

x = x + 1;
lub

x += 1;
albo tylko

x++;

wiczenie
Napisz program pobierajcy dwie liczby i wykonujcy na nich pi dziaa arytmetycznych z wykorzystaniem
operatorw: += , -= , *= , /= , %=.

Rozwizanie

You might also like