03 Wprowadzenie C#

background image

1 Cel ¢wiczenia.

1

POLITECHNIKA ‘LSKA

w Gliwicach

WYDZIAŠ IN›YNIERII BIOMEDYCZNEJ

LABORATORIUM

J†ZYKÓW PROGRAMOWANIA

Pierwsze kroki w j¦zyku C#.

Opracowaª: dr in». Wojciech Wi¦cªawek

1 Cel ¢wiczenia.

Celem ¢wiczenia jest zapoznanie studentów z podstawami tworzenia aplikacji konsolowych w j¦zyku C# w ±ro-
dowisku Visual Studio 2008 rmy Microsoft, struktur¡ programu C# oraz typami zmiennych.

2 Wprowadzenie.

J¦zyk C# zostaª stworzony do celów programowania, przeªomowej pod wzgl¦dem technologicznym, platformy
.NET Framework. Š¡czy on wiele najlepszych cech j¦zyków C++ oraz Microsoft Visual Basic, lecz ma bardziej
przejrzyst¡ i logiczn¡ struktur¦. J¦zyk ten jest nadal dynamicznie rozwijany, o czym ±wiadcz¡ kolejne jego
wersje, w których dokonano implementacji wielu mechanizmów znanych z sytemu Windows takich jak: ADO
(ang. ActiveX Data Objects), ASP (ang. Active Server Pages), XML (ang. Extensible Markup Language), WMI
(ang. Windows Management Instrumentation).

Platforma .NET Framework zawiera wspólny aparat wykonawczy dla ró»nych j¦zyków oraz bogat¡ bibliotek¦

klas. W ramach platformy Microsoft .NET zdeniowano swoisty j¦zyk uniwersalny, tzw. CLS (ang. Common
Language Subset - wspólna cz¦±¢ j¦zyków). Zapewnia on pªynn¡ wspóªprac¦ mi¦dzy zgodnymi ze standardem
CLS j¦zykami i bibliotekami klas. J¦zyk C# sam w sobie nie zawiera wbudowanych bibliotek klas, zamiast tego
korzysta z bibliotek BCL (ang. Base Class Libraries) dostarczanych przez platform¦ .NET Framework (s¡ one
dost¦pne dla ka»dego j¦zyka .NET) [1].

J¦zyk C# nie jest od razu kompilowany do postaci kodu maszynowego. Po kompilacji kodu ¹ródªowego

otrzymujemy IL (ang. Intermediate Language), dopiero podczas uruchamiania programu CLR (ang. Common
Language Runtime) przeksztaªca IL do postaci wykonywalnej.

Program w C# jest tworzony poprzez budowanie nowych typów (gªównie klas) oraz deklarowanie ich obiek-

tów. W skªad ka»dego typu wchodz¡ dane oraz funkcje skªadowe.

background image

3 ‘rodowisko Visual Studio 2008

2

Dla kompilatora C# uªo»enie oraz nazwy plików ¹ródªowych (z rozszerzeniem .cs) nie maj¡ znaczenia.

Zgodnie z konwencj¡ powinno si¦ jednak ka»d¡ klas¦ umieszcza¢ w osobnym pliku o nazwie odpowiadaj¡cej
nazwie tej klasy, natomiast ka»dy plik powinien si¦ znajdowa¢ w katalogu o nazwie odpowiadaj¡cej przestrzeni
nazw, do której nale»y ta klasa [2].

3 ‘rodowisko Visual Studio 2008

Jak wiadomo tworzenie programu komputerowego wymaga napisania kodu ¹ródªowego, a nast¦pnie jego kom-
pilacji. Ponadto podczas pisania programu bardzo pomocne s¡ dodatkowe narz¦dzia uªatwiaj¡ce pisanie i te-
stowanie kodu. Te wszystkie funkcje oferuje zintegrowane ±rodowisko programistyczne IDE (ang. Integrated
Development Environment), którego jednym z przykªadów jest Visual Studio 2008, dost¦pne w Politechnice
‘l¡skiej na zasadach licencji MSDNAA (ang. Microsoft Developer Network Academic Alliance) [3].

W celu napisania programu z menu File wybieramy pozycj¦ New, a dalej Project. Posªuguj¡c si¦ drzewem

typów projektów, widocznym z lewej strony na Rys. 1, wybieramy kolejno: Other Languages  Visual C#
 Windows, a dalej z pola szablonów Console Application (prawa strona Rys. 1) oraz w polu Name poda-
jemy nazw¦ tworzonego przez nas projektu. W efekcie otrzymamy gotowy, pusty szablon projektu. Warto tak

Rys. 1: Okno wyboru nowego projektu.

przygotowa¢ sobie ±rodowisko by okno VS 2008 skªadaªo si¦ z trzech gªównych cz¦±ci Rys. 2:

1. Drzewa projektu (Solution Explorer),

2. Edytora kodu,

3. Okna komunikatów.

W celu takiej konguracji okien ±rodowiska pomocne mog¡ by¢ pozycje menu View takie jak: Solution

Explorer, Error List, Output oraz odpowiednie przeci¡ganie okien przy pomocy myszki.

W oknie Solution Explorer widoczne s¡ foldery i pliki tworz¡ce projekt, o podanej wcze±niej nazwie, wy-

±wietlanej na samej górze drzewa. Wskazuje on plik projektu o rozszerzeniu .csproj. Je»eli projekt utworzony
zostaª jako nowe rozwi¡zanie (ang. solution) na dysku w okre±lonej uprzednio lokalizacji powstaª plik z rozsze-
rzeniem .sln. Poni»ej w drzewie znajduje si¦ pozycja Properties okre±laj¡ca folder projektu, zawieraj¡cy pliki
z informacjami o atrybutach projektu (standardowo znajduje si¦ tam plik AsemblyInfo.cs). Dalej traamy

background image

3 ‘rodowisko Visual Studio 2008

3

Rys. 2: Okno nowego projektu.

na folder References zawieraj¡cy odwoªania (referencje) do przestrzeni nazw u»ywanych przez program. Jako
ostatni wyst¦puje plik zawieraj¡cy kod ¹ródªowy aplikacji (rozszerzenie .cs).

Tak utworzony projekt podczas próby opuszczenia ±rodowiska b¡d¹ po wybraniu pozycji Save All z menu

File mo»e zosta¢ zapami¦tany w oddzielnym dla niego katalogu (zaª¡czona opcja Create Directory for
Solution) w podanej przez u»ytkownika lokalizacji na dysku. Wszystko to kongurujemy w oknie widocznym
na Rys. 3.

Rys. 3: Zapami¦tanie projektu na dysku.

Kod ¹ródªowy tworzonej przez nas aplikacji konsolowej kontynuujemy w oknie edytora, w pliku o nazwie

adekwatnej do utworzonego przez nas projektu z rozszerzeniem .cs. Szkielet aplikacji wygenerowany przez
±rodowisko VS 2008 ma posta¢:

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

namespace Instrukcja{

class Program{

static void Main(string[] args){
}

background image

3.1 Pierwszy program

4

}

}

Aplikacja ta skªada si¦ z cz¦±ci wykorzystuj¡cej dyrektyw¦ using do wskazania u»ywanych w programie

przestrzeni nazw. Dalej nast¦puje deklaracja przestrzeni nazw Instrukcja przy pomocy sªowa kluczowego
namespace, w której znajduje si¦ tworzona aplikacja. Kolejn¡ rzecz¡ jest deklaracja klasy o nazwie Program,
która domy±lnie zawiera tworzon¡ aplikacj¦ konsolow¡. Poni»ej znajduje si¦ deklaracja metody (funkcji), której
nazwa, podobnie jak w j¦zyku C, to Main. J¦zyk C# podobnie jak C++ rozró»nia wielko±¢ liter przy wszystkich
poleceniach, metodach czy nazwach zmiennych, st¡d te» zapis main spowoduje pojawienie si¦ informacji o bª¦-
dzie, widocznej w dolnej cz¦±ci okna ±rodowiska, na zakªadce Error List. Metoda Main rozpoczyna dziaªanie
programu. Musi by¢ ona metod¡ statyczn¡ st¡d jej denicj¦ poprzedza sªowo kluczowe static. Kolejne sªowo
kluczowe void oznacza, i» metoda nie zwraca »adnej warto±ci (podobnie jak w j¦zyku C funkcja niezwracaj¡ca
warto±ci byªa wªa±nie typu void). Poniewa» metoda Main jest pusta (nie zawiera »adnej instrukcji) z punktu
widzenia u»ytkownika mo»na powiedzie¢, »e nic nie robi. St¡d próba uruchomienia programu wraz z jego kom-
pilacj¡ (menu Debug pozycja Start Debugging, klawisz skrótu F5) spowoduje wyª¡cznie chwilowe pokazanie
okna u»ytkownika. Je»eli wcze±niej przeprowadzono zako«czon¡ sukcesem kompilacj¦ kodu programu mo»na
uruchomi¢ go bez ponownej kompilacji wybieraj¡c z menu Debug pozycj¦ Start Without Debugging (skrót
klawiszowy Ctrl+F5). Sposób ten pozwoli na zaobserwowanie efektów realizacji programu w oknie konsoli wraz
z wy±wietleniem komunikatu o konieczno±ci naci±ni¦cia dowolnego klawisza.

Wygenerowany przez ±rodowisko szkielet programu jest troch¦ nadmiarowy i da si¦ upro±ci¢ do postaci:

using System;
class Program{

static void Main(){
}

}

w której nie tworzy si¦ przestrzeni nazw, metoda Main jest bezparametryczna, a przestrze« nazw ograniczona
do przestrzeni systemowej.

Istotne jest aby w ramach jednego programu »adna klasa ani struktura nie zawieraªa wi¦cej ni» jednej

metody Main, której denicja speªnia warunki nakªadane na punkt wej±cia do programu. Wprawdzie dzi¦ki
mo»liwo±ci przeci¡»ania metod dozwolone s¡ dodatkowe wersje metody Main, ale nale»y tu pami¦ta¢ o pewnych
dodatkowych warunkach. Przeci¡»anie metod b¦dzie tematem oddzielnego laboratorium.

3.1 Pierwszy program

Zazwyczaj w kursach nauki j¦zyków programowania jako pierwszy program, prezentowana jest aplikacja wy-
±wietlaj¡ca na ekranie pewien komunikat. Rozbudowa przytoczonego powy»ej szkieletu aplikacji w j¦zyku C#
realizuj¡ca takie zadanie miaªaby posta¢:

using System;

class Program{

static void Main(){

Console.WriteLine("Pierwszy program");

}

}

Wykorzystuje ona metod¦ WriteLine() obiektu Console. Zapis tego faktu polega na wskazaniu najpierw obiektu
(Console), nast¦pnie u»yciu operatora kropki (.) pozwalaj¡cego uzyska¢ dost¦p do metod zaimplementowanych
w tej klasie. W naszym przypadku do metody pozwalaj¡cej na wy±wietlenie komunikatu na ekranie u»ytkownika.
Komunikat ten podawany jest w cudzysªowie.

background image

3.2 Kompilacja

5

Wykonanie takiego programu niewiele b¦dzie si¦ ró»ni¢ od realizacji programu z poprzedniego listingu czego

powodem jest brak zatrzymania aplikacji po jej realizacji. Jedn¡ z mo»liwo±ci zatrzymania jest jak wcze±niej
podano wykonanie programu bez jego kompilacji (o ile wcze±niej ta wersja programu zostaªa skompilowana).
Mo»na równie» posªu»y¢ si¦ znanym mechanizmem polegaj¡cym na oczekiwaniu na wprowadzenie znaków z
klawiatury po zako«czeniu realizacji programu. W tym celu posªu»y¢ si¦ nale»y metod¡ ReadLine() tak»e
dost¦pn¡ dla obiektu Console. Zasada odwoªania do tej metody jest identyczna jak w przypadku metody
WriteLine() tzn. wykorzystuje operator kropki.

using System;

class Program{

static void Main(){

Console.WriteLine("Pierwszy program");
Console.ReadLine();

}

}

Szczegóªowe omówienie obu metod b¦dzie tematem oddzielnego ¢wiczenia dotycz¡cego operacji wej±cia-

wyj±cia.

3.2 Kompilacja

Bardzo cz¦sto niewprawieni u»ytkownicy ±rodowiska VS 2008 b¡d¹ nieczytaj¡cy generowanych przez nie ko-
munikatów podczas uruchamiania napisanego programu, w rzeczywisto±ci ogl¡daj¡ efekt realizacji ostatniej
poprawnie napisanej wersji swojej aplikacji. Ma to miejsce, gdy» ±rodowisko VS 2008 w momencie rozpocz¦cia
debugowania (Debug, Start Debugging, skrót klawiszowy F5) kompiluje program, a w momencie napotkania
bª¦du w oknie Error List wy±wietla komunikat o napotkanym bª¦dzie, a dalej uruchamia ostatni¡ skompi-
lowan¡, poprawnie dziaªaj¡c¡ wersj¦ tego programu. Ci, którzy nie zorientuj¡ si¦, »e nast¡piª bª¡d, ogl¡daj¡
efekt realizacji starszej wersji programu, najcz¦±ciej realizuj¡cej inne zadania, ni» te które taki programista
usiªowaª do programu wprowadzi¢. Aby mie¢ pewno±¢, i» realizujemy program po ostatnich modykacjach z
uwag¡ nale»y ±ledzi¢ wynik kompilacji programu. Mo»na równie» posªu»y¢ si¦ menu Build i oferowanymi przez
nie operacjami:

Build nazwa_projektu  kompilacja ostatnio zmienionych elementów projektu,

Rebuild nazwa_projektu  kompilacja wszystkich elementów projektu,

Clean nazwa_projektu  usuni¦cie wszystkich elementów projektu powstaªych w wyniki kompilacji.

Niezwykle przydatne podczas tworzenia aplikacji s¡ funkcje debuggera umo»liwiaj¡ce krokow¡ realizacj¦

programu (menu Debug pozycje Step Into, Step Over), zatrzymanie programu w ±ci±le okre±lonym miejscu
poprzez umieszczanie puªapek (menu Debug pozycje Toggle Breakpoint), obserwacj¦ zmiennych wykorzysty-
wanych w programie podczas jego fragmentarycznej realizacji (menu Debug pozycja Quick Watch, okna Watch
lub Locals dost¦pne wyª¡cznie podczas krokowej realizacji programu).

3.3 Komentarze

Bardzo cz¦sto dla uªatwienia zrozumienia programu oraz sensowno±ci u»ycia kolejnych instrukcji dodajemy
komentarze pozwalaj¡ce odnale¹¢ si¦ w programie ka»demu kto do niego si¦gnie, a nawet samym sobie, gdy» z
upªywem czasu sami stracimy nad nim kontrol¦. Komentarze pojawi¢ si¦ mog¡ w dowolnym miejscu programu.
S¡ one caªkowicie pomijane przez kompilator i nie s¡ dodawane do plików wynikowych.

background image

4 Typy danych w C#

6

Komentarze s¡ tak»e bardzo przydatne je±li po dodaniu fragmentu kodu nast¦puje bª¡d kompilacji  taki

fragment mo»na zamkn¡¢ w komentarz celem przywrócenia poprawnej kompilacji, a nast¦pnie zastanowi¢ si¦
gdzie tkwi bª¡d.

Mo»emy rozró»ni¢ dwa rodzaje komentarzy: liniowe (wierszowe) oraz blokowe. Komentarz liniowy wskazu-

jemy podwójnym znakiem slash // (pl. ci¦cie) za którym umieszczamy komentarz. W takim przypadku nie
wskazujemy ko«ca komentarza (koniec komentarza wskazuje automatycznie znak ko«ca linii, w której zostaª
on umieszczony). Natomiast chc¡c umie±ci¢ w programie komentarz blokowy konieczne jest wskazanie jego po-
cz¡tku i ko«ca przy czym pocz¡tek wskazuje kombinacja znaków /*, a koniec przestawiona para tych samych
znaków */. Komentarz blokowy (w przeciwie«stwie do liniowego) mo»e si¦ znale¹¢ równie» wewn¡trz wybranej
instrukcji. Komentarzy blokowych nie wolno zagnie»d»a¢.

Przykªady obu komentarzy pokazuje listing znanego programu zamieszczony poni»ej:

using System;

/* nasz

pierwszy
program

*/

class Program{

static void Main(){

Console.WriteLine/* np. tu*/("Pierwszy program"); // wy±wietlenie komunikatu
Console.ReadLine();

}

}

4 Typy danych w C#

Klasykacja typów danych w j¦zyku C# jest nast¦puj¡ca:

1. Typy warto±ciowe

(a) proste (podstawowe)

(b) wyliczeniowe (enumeracje)

(c) strukturalne

2. Typy referencyjne

(a) klasowe

(b) interfejsy

(c) tablice

3. Wska¹niki

Typy warto±ciowe s¡ strukturami przechowywanymi na stosie jako warto±ci (st¡d ich nazwa). Natomiast

warto±ci typów referencyjnych przechowywane s¡ na stercie (w pami¦ci rezerwowanej dynamicznie), a na stosie
znajduj¡ si¦ jedynie referencje tzn. wskazania do okre±lonych obiektów. Typów wska¹nikowych u»ywa si¦ za± do
jawnego manipulowania pami¦ci¡, cho¢ w j¦zyku C# ich u»yteczno±¢ jest niewielka.

Najcz¦±ciej podczas pisania prostych aplikacji posªugujemy si¦ typami podstawowymi, pozwalaj¡cymi wy-

konywa¢ operacje na liczbach, znakach czy ªa«cuchach znaków.

W±ród typów caªkowitoliczbowych nale»y wyró»ni¢:

background image

5 Zmienne

7

Nazwa Zakres warto±ci Znaczenie
sbyte

−2

7

 2

7

− 1

8-bitowa liczba ze znakiem

byte

0



2

8

− 1

8-bitowa liczba bez znaku

short

−2

15

 2

15

− 1

16-bitowa liczba ze znakiem

ushort

0



2

16

− 1

16-bitowa liczba bez znaku

int

−2

31

 2

31

− 1

32-bitowa liczba ze znakiem

uint

0



2

32

− 1

16-bitowa liczba bez znaku

long

−2

63

 2

63

− 1

64-bitowa liczba ze znakiem

ulong

0



2

64

− 1

64-bitowa liczba bez znaku

Do typów zmiennoprzecinkowych nale»¡ natomiast:

Nazwa

Zakres warto±ci

Znaczenie

oat

±1, 5 · 10

−45

 ±3, 4 · 10

38

7 miejsc po przecinku

double

±5 · 10

−324

 ±1, 7 · 10

308

15 lub 16 cyfr

decimal ±1, 0 · 10

−28

 ±7, 9 · 10

28

28 lub 29 cyfr

Typ decimal sªu»y do prezentacji liczb stosunkowo niewielkich ze znaczn¡ precyzj¡.
Typ znakowy char w j¦zyku C# jest 16-to bitowy i zawiera znaki Unicode. Jest to komputerowy zestaw

znaków, maj¡cy w zamierzeniu obejmowa¢ wszystkie pisma u»ywane na ±wiecie. De facto ka»dy znak reprezen-
towany jest 16-to bitow¡ liczb¡, dlatego cz¦sto zalicza si¦ ten typ do typów caªkowitoliczbowych. Chc¡c jednak
posªugiwa¢ si¦ znakami, a nie kodami znaków, dany symbol nale»y umie±ci¢ w apostrofach np. 'a' oznacza
maª¡ liter¦ a.

Przydatnym w pewnych zastosowaniach mo»e by¢ typ bool obejmuj¡cy warto±ci logiczne prawda/faªsz czyli

true/false. Ten typ cz¦sto uto»samiany jest z wyra»eniami logicznymi oraz testowaniem warunków w instruk-
cjach warunkowych. W przeciwie«stwie jednak do j¦zyka C typu tego nie mo»na ª¡czy¢ z warto±ciami liczbowymi
0

, 6= 0.

Omówienie pozostaªych typów mo»na znale¹¢ w literaturze.

5 Zmienne

Zmienna (dost¦pna poprzez identykator) reprezentuje miejsce w pami¦ci. Ka»da zmienna posiada swój typ,
który okre±la zbiór mo»liwych warto±ci i operacji. C# jest j¦zykiem o ±cisªej typizacji, zbiór mo»liwych ope-
racji dost¦pnych dla danego typu/zmiennej jest okre±lany ju» podczas kompilacji, a zmienna jest dost¦pna
tylko poprzez powi¡zany z ni¡ typ. Zmienne deklarujemy wedªug wzoru: modyfikatory typ identyfikator
= wartPocz;, przy czym modykatory oraz warto±¢ pocz¡tkowa nie s¡ wymagane [2]. Przykªadowa deklaracja
zmiennej o nazwie a typu caªkowitego, z nadaniem jej warto±ci pocz¡tkowej mo»e mie¢ posta¢: int a = 10;

W±ród dost¦pnych modykatorów typów nale»y wymieni¢:

static  zmienna statyczna

const  staªa w programie

readonly  tylko do odczytu

volatile  tzw. typ nietrwaªy

Dokªadniejsz¡ charakterystyk¦ modykatorów typów mo»na równie» odnale¹¢ we wskazanych w instrukcji po-
zycjach bibliogracznych.

Deklaracj¦ wi¦kszej liczby zmiennych tego samego typu przeprowadzi¢ mo»na przy pomocy zwartego za-

pisu postaci: modyfikatory typ identyfikator1,identyfikator2,identyfikator3;. W deklaracji takiej

background image

6 Program ¢wiczenia

8

ka»demu identykatorowi z osobna mo»na nada¢ po»¡dan¡ warto±¢ wcze±niej pokazan¡ metod¡. Inaczej ni»
w j¦zyku C deklaracje zmiennych mog¡ wyst¡pi¢ gdziekolwiek w programie, a nie na jego pocz¡tku. Daje to
olbrzymi¡ wygod¦ programi±cie, który deklaruje zmienn¡ wówczas, gdy na danym etapie pisania kodu wydaje
si¦ ona niezb¦dna. Przykªad zamieszczono poni»ej:

using System;

class Program{

static void Main(){

Console.WriteLine("Pierwszy program");
Console.ReadLine();
int a = 13;
Console.WriteLine(a);
Console.ReadLine();

}

}

6 Program ¢wiczenia

W programie ¢wiczenia przewiduje si¦:

1. Zapoznanie studentów z tworzeniem aplikacji konsolowych w j¦zyku C# przy pomocy ±rodowiska Visual

Studio 2008

2. Utworzenie pustego projektu, a nast¦pnie dodanie do niego pliku z metod¡ Main.

3. Napisanie prostego programu wy±wietlaj¡cego na ekranie u»ytkownika komunikat sªowny.

4. Rozbudowa programu o cz¦±¢ obejmuj¡c¡ deklaracj¦ zmiennych oraz podj¦cie próby wy±wietlenia ich

warto±ci na ekranie u»ytkownika.

5. Rozbudowa projektów o dodatkowe klasy (pliki).

6. Wiele projektów (project) w jednym rozwi¡zaniu (solution), przeª¡czanie aktywnego projektu.

Literatura

[1] Hejlsberg A., Wiltamuth S., Golde P., Microsoft C# Language Specication, Addison-Wesley, 2004.

[2] Dusi«ski D.Kurs C# (ver 2.0), http://www.toya.net.pl/~daniel_d/csharp/index.html

[3] http://aei.polsl.pl/informacje/program-msdn-academic-alliance.html

[4] Liberty J. (Tªumaczenie: Walczak T.), C#. Programowanie, Helion, 2005.

[5] Lis M., C#. Praktyczny kurs. Helion, 2007,


Document Outline


Wyszukiwarka

Podobne podstrony:
03 2 Wprowadzanie zamówienia sprzedaży INSTR1
2014 03 wprowadzenie, Różne, Przygotowanie do ŚDM w Krakowie 2016 rok, Grudzień 2013 rok, Styczeń 20
Cwiczenie nr 03 Wprowadzenie do chemii analitycznej
03 Wprowadzanie?nych stałych
03 2 Wprowadzanie zamówienia sprzedaży (INSTR1)
03 Wprowadzenie podjęcia produktów (INSTR12)
03 Wprowadzenie do badan jakosc Nieznany
03 Wprowadzenie
Wprow. do Pracy z rodzina 03, wprowadzenie do pracy z rodziną
03 2 Wprowadzanie zamówienia sprzedaży INSTR1
03 css wprowadzenie
kurs wprow.cz.prakt.2008, Znieczulenie, Wykłady-Wprowadz. do spcjalizacji w anestezjologii i int.ter
Wykład 1 - Wprowadzenie - 01.03.2011 r, studia
03 Interakcje stosunki spoleczne organizacja struktura spoleczna, studia, wprowadzenie do socjologii
03 13 Wprowadzenie podjęcia produktów INSTR12

więcej podobnych podstron