1 wprowadzenieid 10032 Nieznany

background image

Wprowadzenie

background image

Przegląd zagadnień

Jedną z podstawowych dziedzin informatyki jest nauka zwana algorytmiką.
Każda osoba chcąca zaprojektować i napisać jakikolwiek program powinna być
zaznajomiona z podstawowymi pojęciami tej nauki.

Do tworzenia programów wykorzystywane są języki programowania.
Większość nowoczesnych języków ma składnię zbliżoną do języka C/C++.
Podstawowe konstrukcję językowe będą pokazywane na przykładzie języka C#,
który składnię ma zbliżoną właśnie do języka C/C++.

Jako narzędzie do tworzenia oprogramowania będziemy używać środowiska
programistycznego Visual Studio.

Po skończeniu tego ćwiczenia studenci powinni:

Znać podstawowe pojęcia z algorytmiki.

Wiedzieć co to jest Platforma .NET

Potrafić korzystać ze środowiska Visual Studio

background image

Podstawowe pojęcia

Przed przystąpieniem do tworzenia własnego programu, po pierwsze musimy
mieć pomysł - wizję, co chcemy, aby program dla nas lub za nas robił.
Następnie tą wizję musimy zamienić na kolejne czynności, które prowadzą do
realizacji naszego pomysłu. W ten sposób powstaje algorytm. Często zwłaszcza
przy mniejszych programach sposób realizacji programu pozostaje w głowie
osoby tworzącej lub jest tworzony na bieżąco w czasie pisania programu. Może
to doprowadzić do licznych błędów, a co za tym idzie zwiększeniu kosztów
stworzenia programu lub jego wadliwego działania. Dobrze jest więc zapisać
nasz sposób realizacji w bardziej lub mniej formalny sposób. Jednym ze
sposobów przedstawienia algorytmów w sposób graficzny jest schemat
blokowy. Podczas analizy i projektowania algorytmu należy zwrócić uwagę na
sposób organizacji informacji w komputerze, czyli jakich struktur danych
będziemy używali. Ma to ogromny wpływ na nasz algorytm.

Po opracowaniu algorytmu zapisujemy go w jakimś języku programowania.
Następnie tłumaczymy nasz program na ciąg zer i jedynek, czyli coś co może
być uruchomione i wykonane przez komputer. Tworzymy program
wykonywalny. Niestety spora grupa osób kończy na typ etapie pracę nad
programem zapominając o przetestowaniu oprogramowania, czyli sprawdzeniu
czy działa zgodnie z oczekiwaniami. Metody testowania oprogramowania są
poza zakresem tego podręcznika.

W tej części rozdziału student pozna następujące pojęcia:

Algorytm

Schemat blokowy

Struktury danych

background image

Program komputerowy

Interpreter

Kompilator

background image

Algorytm

Słowo algorytm pochodzi od przydomku al-Chwarizmi arabskiego matematyka
i astronoma Muhammada ibn Musa żyjącego w IX wieku.

Algorytm krótko możemy powiedzieć, że oznacza przepis. W życiu
codziennym spotkamy się z wieloma przykładami algorytmów. Są to np.
wszystkie instrukcje obsługi telewizora, pralki, aparatu fotograficznego itp.,
opis czynności przy wymianie oleju, zmianie żarówki w samochodzie,
wymianie bezpiecznika... Chyba najczęściej podawanym jako przykład zbioru
algorytmów w życiu codziennym jest książka kucharska. Spróbujmy zapisać
jakiś prosty algorytm, np. przygotowanie herbaty w postaci listy kroków.

1. Nalej wodę do czajnika

2. Postaw czajnik na gaz

3. Włącz gaz

4. Zagotuj wodę

5. Wrzuć saszetkę do szklanki

6. Zalej herbatę

7. Posłódź do smaku

8. Wypij herbatę

Przy analizie powyższego algorytmu nasuwają się jednak pytania. Ile wody
mam nalać, co mam zrobić, gdy mam czajnik elektryczny lub, co oznacza
posłódź do smaku. Zapewne każdy z nas zetknął się z jakąś instrukcją, która
była niejednoznaczna, a wręcz niezrozumiała. Dzieje się tak, gdyż zadania i

background image

problemy najczęściej formułujemy w języku naturalnym, ale język naturalny
nie jest jednoznaczny i precyzyjny.

Sprecyzujmy pojęcie algorytmu ściślej.
Algorytm - jest to kończony i uporządkowany zbiór jasno zdefiniowanych
czynności, który prowadzi do rozwiązania jakiegoś problemu w ograniczonej
liczbie kroków. Naukę zajmującą się badaniem algorytmów nazywamy
algorytmiką.

Z powyższej definicji możemy wyprowadzić następujące właściwości
algorytmu:

a. skończoność - rozwiązuje problem w ograniczonej liczbie kroków,

musi mieć swój koniec

b. określoność - zarówno kolejność wykonywania poszczególnych

kroków, jak i zbiór dostępnych instrukcji oraz ich znaczenie powinny
być ściśle zdefiniowane nie zostawiając miejsca na dowolność
interpretacji

Przy opisie algorytmu należy podać warunki początkowe - dane wejściowe dla
naszego algorytmu oraz warunki końcowe - czyli to, co chcemy osiągnąć.
W przypadku przepisów kulinarnych warunkami początkowymi są potrzebne
produkty oraz urządzenia konieczne do wykonania przepisu, warunkiem
końcowym uzyskanie żądanej potrawy. Podanie zbioru właściwości
(warunków) początkowych oraz zabioru warunków (właściwości) końcowych
nazywamy specyfikacją algorytmu.
Mając określone warunki początkowe oraz
warunki końcowe, algorytm możemy zdefiniować jako skończony ciąg kroków,
przekształcający stan początkowy (dane wejściowe) w stan końcowy (dane
wyjściowe). W powyższym opisie pojawia się pojęcie dana. Przez dane
będziemy określać to, co przetwarza (na czym pracuje) algorytm i co możemy
otrzymać po skończeniu działania algorytmu.

Algorytm oczywiście możemy ocenić. Oceniając algorytm bierzemy pod uwagę
następujące jego właściwości:

a. poprawność - czy algorytm działa zgodnie z naszymi oczekiwaniami.

Przy ocenie poprawności możemy wyróżnić:
Algorytm całkowicie poprawny - dla wszystkich danych spełniających
warunek początkowy, algorytm zatrzymuje się i daje wyniki
spełniające warunek końcowy
Algorytm częściowo poprawny - dla wszystkich danych spełniających
warunek początkowy, jeżeli algorytm zatrzyma się, to uzyskane wyniki
spełniają warunek końcowy

b. efektywność - koszt algorytmu. W przypadku algorytmów

implementowanych na komputerze do porównania efektywności
algorytmu wprowadzono pojęcie złożoności obliczeniowej, którą
definiujemy jako ilość zasobów wymaganych przez dany algorytm.
Główne zasoby to:

pamięć - ilość miejsca potrzebna dla danych

czas - wbrew nazwie nie określmy to jako o ilość czasu mierzona
w sekundach (lub innych jednostkach czasu) od rozpoczęcia
wykonywania algorytmu do jego zakończenia, gdyż ocena w
dużym stopniu zależałaby od komputera na którym
zaimplementowany algorytm został uruchomiony. Zamiast tego
stosujemy liczbę operacji (instrukcji) podstawowych wykonanych
w czasie realizacji algorytmu.

background image

c. ogólność - czy algorytm odnosi się do konkretnego, szczególnego

przypadku (bardzo ograniczone dane wejściowe) lub odnosi się do
pewnej klasy zadań

d. czytelność - czy algorytm jest zrozumiały

e. prostota - czy algorytm jest krótki (prosty), stopień skomplikowania

f. długość kodu - łatwość implementacji algorytmu w danym języku

programowania

Podsumowując możemy powiedzieć, że dobry algorytm to taki, który jest
prosty, łatwy do zaimplementowania, łatwo go zrozumieć, liczy szybko, nie
wymaga dużo miejsca w pamięci i zawsze daje poprawne wyniki.

Sam algorytm możemy przedstawić na kilka sposobów: w postaci słownego
opisu, listy kroków, drzewa decyzyjnego, schematu blokowego.

background image

Schemat blokowy

Schemat blokowy - diagram, graficzny sposób przedstawienia działania
algorytmu. Składa się z figur, zwanych skrzynkami lub blokami, które
połączone są odcinkami, które nazywamy ścieżkami sterującymi.

W schemacie blokowym stosujemy następujące symbole graficzne:

Ścieżka sterująca. Przy pomocy strzałki określamy kierunek
przepływu danych lub kolejność wykonywania działań

Skrzynka oznaczająca wejście (początek) algorytmu.
Posiada tylko jedną ścieżkę wyjściową. Schemat blokowy
może mieć tylko pojedynczy blok oznaczający początek
algorytmu.

Skrzynka oznaczająca wyjście (koniec) algorytmu. Posiada
tylko jedną ścieżkę wejściową. Schemat blokowy może
mieć dowolną ilość bloków oznaczających koniec
algorytmu.

Blok wprowadzanie lub wyprowadzania danych. Posiada
jedno wejście i jedno wyjście.

Skrzynka operacji. Oznacza wykonanie instrukcji
elementarnej (-ych), w efekcie której zmienią się wartości,
postać lub miejsce zapisu danych. Posiada jedno wejście i
jedno wyjście.

Start

Stop

background image

Skrzynka decyzyjna - przedstawia wybór jednego z dwóch
wariantów wykonywania programu na podstawie
sprawdzenia warunku wpisanego do wnętrza bloku. Posiada
jedno wejście i dwa wyjście.

Skrzynka wywołania podprogramu - część naszego
algorytmu, która stanowi odrębną całość i jest zdefiniowana
poza bieżącym schematem blokowym.. Posiada jedno
wejście i jedno wyjście.

Łącznik wewnętrzny (stronicowy) - służy do połączenia
części schematu blokowego znajdujących się na tej samej
stronie. Powiązane ze sobą łączniki oznaczone są tym
samym napisem lub numerem.

Łącznik zewnętrzny (

międzystronicowy)

- służy do połączenia części schematu blokowego
znajdujących się na różnych stronach.

Skrzynka komentarza - pozwala wprowadzić opis
wyjaśniający poszczególne części schematu, co ułatwia
zrozumienie go czytającemu

Przykład.

Schemat blokowy algorytmu, który sprawdza czy podana liczba jest parzysta.

Start

Podaj wartość
liczby a:

a - liczba całkowita

Czy a % 2 = = 0

?

% - reszta z dzielenia

= = - porównanie

Tak

Nie

Wypisz: "Podałeś
liczbę nieparzystą"

Wypisz: "Podałeś
liczbę parzystą"

Stop

background image

Struktury danych

Struktura danych to sposób organizacji danych w komputerze. Określa ona
relacje między danymi i zbiór dostępnych operacji oraz właściwości tych
operacji. Wybór odpowiedniej struktury danych ma ogromny wpływ na
efektywność algorytmu. Poszczególne typy struktur danych zostaną omówione
dokładniej w dalszej części kursu, tutaj tylko je wymienimy:

tablica

rekord

lista

stos

kolejka

drzewo

graf (niestety poza zakresem tego kursu)

background image

Program komputerowy

Algorytm piszemy (rysujemy) po to, aby móc utworzyć program komputerowy.
Tworząc program, zamieniamy więc pojęcia naszego języka (tym którym
mówimy) lub symbole graficzne schematu blokowego na instrukcje zrozumiane
przez komputer. Możemy powiedzieć, że program komputerowy jest to
algorytm zapisany w "języku komputera". Komputery niestety przetwarzają
tylko ciągi zer i jedynek. Każda operacja, instrukcja jest zakodowana w postaci
pewnej liczby dwójkowej. Ludzie nie są przystosowani do pracy z liczbami,
zwłaszcza dwójkowymi. Wprowadzono więc pewne symbole, które
zastępowały kody poszczególnych instrukcji i utworzono programy które
zamieniały symbole na odpowiadające im kody instrukcji. Język, którego
symbole odpowiadają dokładnie instrukcją procesora nazywamy Asemblerem.
Wraz z rozwojem informatyki, powstało zapotrzebowanie na coraz bardziej
skomplikowane i zawansowane oprogramowanie. Aby ułatwić tworzenie
bardziej skomplikowanego oprogramowania, zaczęto tworzyć pewne symbole,
które ułatwiały tworzenie oprogramowanie, ale nie miały bezpośredniego
odwzorowania na instrukcje procesora. Program tłumaczący (zmieniający
symbole na odpowiednie kody instrukcji), zwany translatorem, musi potrafić
zamienić te "skomplikowane" symbole na ciąg instrukcji danego procesora. Tak
powstały języki programowania wysokiego poziomu. Zbiór symboli, które
translator potrafi rozpoznać i zamienić na kody instrukcji danego procesora
nazywamy słowami kluczowymi. Słowa kluczowe zostaną dokładniej omówione
w następnym rozdziale.

Program komputerowy jest to ciąg instrukcji, które mają być wykonywane
przez komputer. Z rozważań powyższych wynika, że mogą być dwie postacie
zapisu tych instrukcji. Pierwszy sposób to bezpośredni zapis w kodzie
dwójkowym kodów instrukcji danego procesora. Postać taką nazywamy
programem wykonywalnym. Postać wykonywalna jest przechowywana

background image

najczęściej w plikach z rozszerzeniem exe lub dll. Drugi sposób to zapis
instrukcji przeznaczonych do wykonania przez komputer w postaci bardziej
czytelnej dla człowieka. Postać tą nazywamy postacią źródłową i do jej
utworzenia używamy tzw. języków wysokiego poziomu. Postać źródłowa jest
przechowywana w plikach testowych, z rozszerzeniem zależnym od
zastosowanego języka programowania wysokiego poziomu. I tak programy
napisane w języku C# posiadają rozszerzenie cs, w języku C++ cpp oraz h, w
języku Visual Basic vb itd.

Proces zamiany postaci źródłowej na postać wykonywalną nazywamy
translacją. Translacja wykonywana jest przez program, jak już wcześniej
wspominano, zwanym translatorem.

background image

Kompilator kontra interpreter

Translator może przetłumaczyć fragment kodu lub nawet pojedynczą instrukcję
i przekazać przetłumaczony kod od razu do wykonania przez komputer. Tak
działający translator nazywamy interpreterem. Proces tłumaczenia zaś
interpretacją kodu. Na zasadzie interpretacji kodu działają wszystkie języki
skryptowe (PHP, JavaScript, VBScript).

Innym sposobem działania jest najpierw przetłumaczenie całego programu
(postać źródłowa) do postaci maszynowej. Dopiero gdy mamy przetłumaczony
cały program, może zostać on wykonany na danej maszynie. Translatory
działające w ten sposób nazywamy kompilatorami, proces translacji natomiast
kompilacją. Programy napisane w językach programowania takich jak Pascal,
C/C++, Fortran są najczęściej kompilowane. Sam proces kompilacji możemy
podzielić na kilka etapów:

prekompilacja - polega na stworzeniu ostatecznego tekstu źródłowego
programu, usunięcie formatowania tekstu (spacje), opcjonalne
usunięcie komentarzy, rozwinięcie dyrektyw preprocesora (różne
operacje na tekście programu - wstawianie, usuwanie, zamiana tekstu)

kompilacja - przetworzenie tekstu źródłowego w kod maszynowy.
Często tekst źródłowy przetwarzany jest najpierw do kodu asemblera
(kompilacja), następnie kod asemblera jest optymalizowany
(optymalizacja), po czym zoptymalizowany kod asemblera zamieniany
jest na kod maszynowy (asemblacja).

konsolidacja (linkowanie) - łączy wybrane pliki obiektowe (plik
powstały po kompilacji pojedynczego pliku źródłowego) i biblioteki
statyczne w program wykonywalny.

background image

UWAGA
Często w praktyce kompilator i linker stanowią oddzielne programy.

Interpretacja kodu jest wolniejsza niż uruchamianie skompilowanego kodu,
ponieważ interpreter musi przeanalizować oraz przetłumaczyć każdą instrukcję
i dopiero następnie wykonać akcję, a w przypadku kodu skompilowanego,
komputer jedynie wykonuje już przetłumaczone instrukcje. Wykonanie
powtórnie tego samego fragmentu kodu przez interpreter wymaga powtórnej
jego analizy.
Sam jednak cykl edycja (modyfikacja postaci źródłowej) - interpretacja
(uruchomienie) może często być znacznie krótszy niż cykl edycja - kompilacja-
uruchomienie.

background image

Środowisko programistyczne Visual Studio

Poszczególne konstrukcje językowe będziemy poznawać na przykładzie języka
C#. Język C# jest językiem zorientowanym obiektowo

1

, z silną kontrolą typów,

kompilowanym do kodu zarządzanego - tworzymy aplikacje uruchamiane na
czymś co się nazywa .NET Framework. .NET Framework stanowi część
składową pewnej idei firmy Microsoft na temat tworzenia oprogramowania,
czyli Platformy .NET.

Po zakończeniu tej części rozdziału student będzie wiedział i potrafił:

Co to jest Platforma .NET i wymienić jej części składowe.

Co to jest język pośredni.

Co to jest podzespół.

Utworzyć prosty program w języku C#.

Korzystać z Visual Studio.

1

Pojęcia programowania zorientowanego obiektowo (polimorfizm,

kapsułkowanie, dziedziczenie...) są poza zakresem tego kursu. Można się z nimi
zapoznać w kursie "Programowanie obiektowe".

background image

Platforma .NET

Platforma .NET jest to zbiór technologii i pewnych usług, które ułatwią
programiście tworzenie aplikacji, ze zwróceniem szczególnej uwagi na Internet
i technologie oraz standardy z nim związane (XML, HTML, SOAP...).
Tworzenie aplikacji spróbujmy porównać do budowy domu i przy okazji
omówić poszczególne komponenty platformy .NET.

1. .NET Framework

Gdy budujemy dom musimy stosować się do praw fizyki i przestrzegać
prawa budowlanego. Stawiamy dom w określonym środowisku
przyrodniczym i prawnym. Środowisko to w pewien sposób nas ogranicza.
Ograniczenia te jednak powodują, że nasz dom jest bezpieczny zarówno dla
użytkowników jak i środowiska, funkcjonalny i nie koliduje z otoczeniem i
innymi domami. Podstawą, tym środowiskiem, do budowy i w którym
będziemy uruchamiali nasze programy jest coś co się nazywa .NET
Framework.. Jeżeli chcemy uruchomić nasz program napisany w języku C#,
musimy na danym komputerze mieć zainstalowane środowisko w którym
będzie on wykonywany, czyli mieć .NET Framework. .NET Framework
ver. 2.0 obsługuje następujące systemy: Windows 2000, Windows 98,
Windows ME, Windows Server 2003, Windows XP. Dokładny opis
obsługiwanych systemów wraz z wersjami można znaleźć w MSDN pod
tematem "System Requirements for Version 2.0". Istnieją również
implementacje .NET Framework na inny systemy (nie "Windowsowe").
Możemy wymienić choćby projekt Rotor, zawierający implementację .NET
Framework na FreeBSD, czy projekt MONO implementacja środowiska na
systemy Linux-owe.
.NET Framework zawiera dwa komponenty: środowisko uruchomieniowe
oraz bibliotekę klas. Środowisko uruchomieniowe (common language
runtime - CLR) zarządza wykonaniem naszego kodu i dostarcza pewnych

background image

serwisów, które ułatwiają programiście tworzenie oprogramowania. Kod
uruchamiany pod kontrolą CLR-a nazywamy kodem zarządzanym
(managed code). Kod zarządzany nie wywołuje funkcji sytemu
operacyjnego bezpośredni, ale za pośrednictwem środowiska
uruchomieniowego. Prócz roli pośredniczącej CLR również dostarcza
szereg serwisów np.: automatyczne zwalnianie pamięci (Garbage collector -
GC), zarządzanie wykonaniem kodu (Code manager), zarządzanie
wyjątkami (Exception manager), sprawdzanie typów (Type checker),
zarządzanie bezpieczeństwem kodu (Security engine).
Gdy rozpoczynamy budowę domu, na działce mamy materiały, z których
możemy wybudować dom, np. piasek, kamienie, drzewo. Podobnie z .NET
Framework dostajemy bibliotekę klas, z tym że bibliotekę klas można
bardziej porównać jakby na działce były gotowe elementy (półfabrykaty )
do budowy domy, a zadaniem programisty jest to tylko je poskładać,
niczym dziecięce klocki.

2. Serwery (The .NET Enterprise Servers)

Wyposażając nasz dom, musi kupić szafy, pralkę, lodówkę, kuchenkę itd.
Oczywiście możemy spróbować te rzeczy wykonać samodzielnie. Koszt
jednak wykonania (czas i materiały) może znacznie przekroczyć cenę
zakupu. Jakoś i zgodność ze standardami prawdopodobnie będzie też
gorsza. Podobnie jest z oprogramowaniem. Możemy napisać własny serwer
bazy danych lub możemy użyć gotowego serwera, zwłaszcza że istnieją
wersje darmowe (MS SQL Express, MySQL...). Firma Microsoft dostarcza
szereg różnych serwerów: Microsoft SQL Server, Microsoft BizTalk
Server, Microsoft Exchange Server, Microsoft SharePoint Portal Server,
Microsoft Internet Security and Acceleration Server, itd.

3. Usługi XML Web Services

Chcąc mieć w pełni funkcjonalny i nowoczesny trzeba podłączyć prąd,
wodę, kanalizację, telefon, telewizję kablową, Internet. Możemy oczywiście
wykopać studnie głębinową, czy postawić wiatrak na podwórku, ale w
większości przypadków taniej będzie skorzystać z usług odpowiedniego
zakładu, wodociągowego czy energetycznego. Podobnie w przypadku
oprogramowania, zamiast przetwarzać wszystko lokalnie, lepiej wysłać
zlecenie do odpowiedniego serwisu i odebrać wyniki w postaci dokumentu
XML. Przykładowym serwisem dostarczanym przez firmę Microsoft jest
Microsoft Passport.

4. Narzędzia programistyczne

Prócz wcześniej wymienionych komponentów, do tworzenia
oprogramowania niezbędne są narzędzia programistyczne: Microsoft
dostarcza produkt o nazwie Microsoft .NET Framework Software
Development Kit. Zawiera on szereg narzędzi do kompilacji, konfiguracji,
wdrażania, debugowania, zabezpieczania itp. Oczywiście również mamy do
dyspozycji Visual Studio - zintegrowane środowisko programistyczne.
Microsoft udostępnia za darmo, również do celów komercyjnych, wersję
Express. Więcej informacji można znaleźć na stronie

http://www.microsoft.com/poland/developer/produkty/vstudio/express/defa
ult.mspx

. Podczas tego kursu będziemy korzystać z wersji Professional.

Będąc studentem, można otrzymać tą wersję pod warunkiem, że wydział
którego jest się studentem, posiada licencję MSDN Academic Alliance.
Więcej informacji na stronach

www.codeguru.pl

.

background image

Język pośredni - IL

Jak już wspominano wcześniej, programista tworzy kod źródłowy w języku
programowania wysokiego poziomu. W przypadku tworzenia oprogramowania
uruchamianego pod kontrolą .NET Framework mamy do wyboru szereg
różnych języków. Microsoft dostarcza Visual Basic, Visual C++, Microsoft
Visual C#, Visual J# i Microsoft JScript. Inni producenci dostarczają
kompilatorów dla innych języków. Warto tu wspomnieć choćby o języku
funkcyjnym Emerle, którego twórcami są naukowcy Uniwersytetu
Wrocławskiego. Język w którym piszemy kod zarządzany musi być zgodny ze
specyfikacją CLS (common language specification).
Po napisaniu kodu źródłowego następuje proces kompilacji. Wynikiem tego
procesu nie jest jednak kod maszynowy danego procesora, tylko tak zwany kod
języka pośredniego (Microsoft Intermediate Language). Dopiero gdy program
będzie uruchamiany, zostanie on skompilowany do kodu maszynowego danej
platformy przez kompilator bezpośredni (just-in-time comiler) i następnie
wykonany. Zastosowanie języka pośredniego daje przenośność kodu na różne
platformy.
Skompilowane obrazy kodu natywnego programów zarządzanych
przechowywane są w obszarze zwanym native image cache. Do zarządzania
tym obszarem służy program Ngen. Więcej informacji na temat programu Ngen
można znaleźć w MSDN Library.

Język pośredni ma swój asembler. Do dezasemblacji kodu służy narzędzie o
nazwie Ildasm. Na temat Ildasm informacje można znaleźć również w MSDN
Library.

background image

Podzespół (Assembly)

Na platformie .NET używa się nowej jednostki opakowania, zamiast pliku,
zwanej podzespołem (assembly). Cały kod zarządzany musi znajdować się w
podzespole. Podzespół składa się z jednego lub większej ilości plików EXE lub
DLL, które zawierają kod IL oraz zasoby aplikacji. Powiązanie między plikami
podzespołu jest logiczne (system operacyjny nic nie wie o powiązaniu między
plikami stanowiącymi podzespół). Podzespół zawiera również manifest, który
zawiera metadane opisujące podzespół. Manifest zawiera:

Nazwę podzespołu (może to być nazwa silna)

Numer wersji podzespołu (wspólny i taki sam dla wszystkich
modułów, które stanowią podzespół). Numer wersji składa się z
czterech licz: numeru głównego (major), numeru drugorzędnego
(minor), numeru kompilacji (build) oraz z numeru korekty
(revision).

Informacje na temat kultury (lub języka) obsługiwanej przez
podzespół

Listę wszystkich plików, które stanowią podzespół, wraz z ich
sumami kontrolnymi

Listę innych wymaganych do pracy podzespołów wraz z numerami
ich wersji.

Atrybuty dodane przez użytkownika.

Podzespół może być prywatny dla danej aplikacji, pliki podzespołu muszą
znajdować się w katalogu aplikacji lub jego podkatalogach i jest używany tylko
przez tą aplikację. .NET Framework umożliwia współużytkowanie

background image

podzespołów. Podzespoły współużytkowane należy umieszczać w globalnej
pamięci podręcznej podzespołów (global assembly cache - GAC) - pseudo
podkatalog WINDIR\assembly. Podzespoły współużytkowane muszą
posiadać silną nazwę.

Do zarządzania podzespołem, dodawania i usuwania plików do/z podzespołu,
służy program AL.exe (Assembly Generation Utility).

background image

Struktura programu w C#

Program w języku C# rozpoczyna się od metody Main, czyli od miejsca w
pliku źródłowym:

static void Main(string[] args)

lub

static void Main()

Przed wyrazem static może wystąpić jeszcze słowo public.

Co to jest metoda i znaczenie słowa void zostanie wyjaśnione dokładnie w
rozdziale ósmym "Funkcje - wstęp". Znaczenie słów static i public jest
dokładnie omówione w kursie "Programowanie obiektowe". Na obecnym etapie
kursu, można przyjąć że metoda jest to pewne polecenie, które nie jest
bezpośrednio instrukcją danego języka, ale kompilator potrafi zamienić to na
ciąg instrukcji.

Uwaga:
Dopuszczalna jest również następująca definicja metody Main, jako punktu
startowego:
static int Main(string[] args)
lub
static int Main()

Poszczególne instrukcje programu umieszcza się między dwoma nawiasami
klamrowymi, tymi bezpośrednio za metodą Main: Nawiasy klamrowe
określają blok kodu - pewną logiczną całość.

static void Main(string[] args)

background image

{

instrukcja1;

instrukcja2;

...

instrukcjan;

}

Instrukcje są wykonywane jedna po drugiej w kolejności ich zapisania.
Program w języku C# kończy się po wykonaniu instrukcji tuż przed nawiasem
klamrowym zamykającym blok kodu metody Main. Innym sposobem
zakończenia programu jest wywołanie instrukcji return wewnątrz bloku
kodu metody Main. Słowo return dokładnie zostanie omówione w
rozdziałach poświęconym metodom - rozdział ósmy.

Metoda jest zawsze składową kasy. Program w języku C# to tak naprawdę
kolekcja jednej lub więcej klas (w C# nie ma funkcji globalnych). Metodę
Main dlatego zawsze trzeba umieścić w bloku kodu definiującym klasę.
Pojęcie klasy zostanie przybliżone w dalszej części kursu, a dokładnie
omówione w kursie "Programowanie obiektowe".

class Program

{

static void Main(string[] args)

{

}

}

Nazwa Program, która w powyższym przykładzie stanowi nazwę klasy, jest
nieobowiązkowa. Można ją zastąpić dowolnym inny identyfikatorem. Jakie są
dopuszczalne identyfikatory zostanie dokładnie omówione w następnym
rozdziale. Powyższy kod pokazuje najprostszy program napisany w języku C#.
Program nic nie robi - jest pusty, ponieważ blok kodu metody Main nie
zawiera żadnej instrukcji.

Uwaga:
Program w języku C# może zawierać kilka klas, Każda z klas może zawierać
metodę Main. Punkt startowy programu jest określany przez nazwę klasy przy
pomocy opcji kompilatora /main. W Visual Studio możemy ustawić to przy
pomocy okna "Właściwości projektu" (menu Project/Nazwa Projektu
Properties...), zakładka Application, lista rozwijana Startup object:.

Najczęściej klasy umieszczane są w pewnych logicznych pudełkach na nazwy,
które określane są jako przestrzeń nazw. Przestrzeń nazw definiuje się przy
pomocy słowa namespace, po którym umieszcza się nazwę "pudełka" i blok
kodu określający, co zawiera dana przestrzeń nazw.

namespace PierwszyProgram

{

class Program

background image

{

static void Main(string[] args)

{

}

}

}

Klasa w powyższym przykładzie ma teraz nazwę:

PierwszyProgram.Program

czyli składa się z nazwy przestrzeni nazw, znaku kropki oraz nazwy
"właściwej" klasy. Jest to nazwa w pełni kwalifikowana.

W programie można stosować nazwy skrócone - bez podawania nazwy
przestrzeni nazw i znaku kropki. Umożliwia się to przez pokazanie na samej
górze pliku źródłowego, które przestrzenie nazw kompilator powinien
przeszukać w celu odnalezienia danej nazwy. Uzyskujemy to przy pomocy
wyrazu using.
Linijka

using System;

oznacza, że jeżeli kompilator nie rozpoznaje jakiejś nazwy w bieżącym
kontekście, powinie sprawdzić przestrzeń nazw System.

Jeden podzespół może zawierać kilka przestrzeni nazw. Przestrzeń nazw danej
nazwie może występować w kilku podzespołach.

background image

Ogólne zasady formatowania kodu

Wewnątrz metody Main umieszcza się ciąg instrukcji. Każdą instrukcję kończy
się znakiem średnika - ;. Przy pisaniu programu w C#, w odróżnieniu od takich
języków jak Pascal czy Visual Basic, należy zwracać uwagę na wielkość liter.
Na przykład, jeżeli zostanie użyta nazwa main zamiast Main, kompilator
zgłosi błąd, że nie odnalazł punku startowego programu.

Dla kompilatora nie ma znaczenia jak będzie rozmieszczony kod - białe znaki
(spacje, tabulatory, znak przejścia do nowej linii) są ignorowane. Obowiązuje
jednak pewien styl formatowania kodu. Każdą instrukcję umieszcza się w
oddzielnej linii. Instrukcje będące w tym samy bloku kodu powinny mięć tę
samą odległość od lewego marginesu - to samo wcięcie. Instrukcje w bloku
kodu zagnieżdżonego powinny mieć większe wcięcie.

{

instrukcja_bloku_głównego1

instrukcja_bloku_głównego2

{

instrukcja_bloku_zagnieżdżonego1

instrukcja_bloku_zagnieżdżonego2

}

instrukcja_bloku_głównego1

}

background image

Visual Studio automatycznie formatuje wcięcia. Otwarcie nowego bloku przez
wstawienie znaku nawiasu klamrowego otwierającego i naciśnięciu klawisza
ENTER powoduje automatyczne zwiększenie lewego wcięcia. Wstawienie w
nowej linii znaku nawiasu klamrowego zamykającego powoduje automatycznie
zmniejszenie lewego wcięcia.

Visual Studio również bardzo ułatwia pisanie kodu dzięki automatycznemu
uzupełnianiu nazw (IntelliSense). W czasie pisanie Visual Studio podpowiada,
jakie nazwy są dostępne wyświetlając menu kontekstowe. Można również
wymusić pojawienie się menu kontekstowego przez naciśnięcie kombinacji
klawiszy CTRL+SPACJA.

Spójne stosowanie wcięć może znacznie uprzyjemnić czytanie i zrozumienie
programu. Innym czynnikiem wpływającym na czytelność programu są
komentarze. Komentarze są tekstami zupełnie ignorowanymi przez kompilator i
mogą zwierać dowolny ciąg znaków. Zawierają najczęściej uwagi na temat
szczegółów działania programu.
W języku C# wyróżniamy dwa rodzaje komentarzy:

komentarz rozpoczynający się od dwóch ukośników // i rozciągający
się do końca wiersza. Komentarz ten można umieścić na początku
wiersz lub za instrukcją:
...
//to jest komentarz
instrukacja;

//komentarz po instrukcji

...

komentarz rozpoczynający się od znaków /*, a który kończy się
znakami */. Komentarz ten może rozciągać się przez wiele linijek.
Komentarze tego typu nie mogą być w sobie zagnieżdżone.
...
instrukacja;
/* tu się zaczyna komentarz
tu nadal trwa
tu się kończy*/
...

W środowisku programistyczny Visual Studio specjalne znaczenie mają trzy
ukośniki ///. Rozpoczynają komentarz, w którym umieszczamy znaczki
XML-owe. Znaczniki określają cel komentarza i na ich podstawie może być
wygenerowana dokumentacja. Visual Studio używa ich również przy
wyświetlaniu podpowiedzi.

background image

Operacje we-wy

Wykonanie programu komputerowego polega często na wprowadzeniu danych,
wykonaniu poszczególnych instrukcji programu oraz wyprowadzeniu
uzyskanych wyników. Do wyprowadzenia uzyskanych wyników najczęściej
służy ekran monitora, natomiast do wprowadzenia danych klawiatura.
Urządzenia te często nazywane konsolą.

Język C#, podobnie jak większość języków nie posiada bezpośrednio instrukcji
współpracujących z konsolą. W bibliotece mscorlib.dll, w przestrzeni nazw
System, zawarta jest klasa Console, która zawiera szereg metod służących
do współpracy z konsolą. Podzespół mscorlib.dll jest domyślnie dodawany do
każdego programu napisanego w języku C#.

Do wypisywania tekstu na ekranie służy metoda Write. Stosuje się ją w
następujący sposób:

System.Console.Write("Tekst do wypisania");

czyli trzeba podać pełną ścieżkę gdzie znajduje się metoda, następnie otworzyć
nawias okrągły i wewnątrz znaków cudzysłów podać tekst do wypisania na
ekranie. Nie wolno zapomnieć o zamknięciu nawiasu okrągłego i postawieniu
średnika. Stosując dyrektywę using, można pozbyć się nazwy przestrzeni nazw,
czyli skorzystać z nazwy skróconej. Nazwy klasy nie można pominąć.

using System

...

Console.Write("Tekst do wypisania");

...

background image

Inną metodą klasy Console wyprowadzającą tekst na ekran jest WriteLine.
Metoda WriteLine po wypisaniu tekstu na ekranie dodatkowo powoduje
przejście do nowej linii.

Do wczytania znaków z klawiatury służą odpowiednio metody klasy
Console: Read i ReadLine. Metody te zatrzymują działanie programu
dopóki użytkownik nie naciśnie klawisza <Enter>. Dokładniej operacje wejścia
- wyjścia zostaną omówione w następnym rozdziale.

Uwaga:
Również do wczytania znaku służy metoda klasy Console.ReadKey. W tym
przypadku program czeka tylko do mementu naciśnięcia dowolnego znaku -
użytkownik nie musi naciskać klawisza <Enter>.
Jeżeli nie chcemy, aby naciskany znak pojawił się na ekranie (wyłączmy echo),
metodę tą należy wywołać w następujący sposób:

Console.ReadKey(true);

background image

Demo 1: Pierwszy program w C#

W demonstracji zostanie pokazany sposób kompilacji programu z linii poleceń:

1. Uruchom program Notatnik lub WordPad.

2. Otwórz plik Kurs\Demo\Modul1\ Program1.cs, gdzie katalog Kurs jest

katalogiem gdzie zostały skopiowane pliki kursu.

3. Przeanalizuj kod programu.

4. Naciśnij przycisk Start systemu Windows, wybierz Wszystkie Programy

następnie Microsoft Visual Studio 2005/ Visual Studio Tools/ Visual
Studio 2005 Command Prompt
. Uruchomienie w ten sposób wiersza
poleceń zapewnia odpowiednie ustawienie zmiennych środowiskowych,
miedzy innymi ścieżki dostępu do kompilatora języka C# (csc.exe).

5. W wierszu poleceń zmień bieżący katalog na: Kurs\Demo\Modul1

6. Skompiluj program następującym poleceniem:

csc /out:Test.exe Program1.cs

Opcji kompilatora /out używamy, gdy chcemy utworzyć plik exe o innej
nazwie niż plik źródłowy. Dokładny opis opcji kompilatora można znaleźć
w MSDN Library pod tematem " C# Compiler Options".

7.

Uruchom program przez napisanie w wierszu poleceń:
Test.exe

8. Omów działanie program z szczególnym zwróceniem uwagi na metody

Write oraz WriteLine.

background image

Demo 2: Korzystanie z Visual Studio

W środowisku Visual Studio nie można pracować na pojedynczym pliku
źródłowym. Trzeba utworzyć coś, co się nazywa projektem. Projekt jest
logicznym pojemnikiem na wszystkie elementy, który służą do budowy
aplikacji. Fizycznie projekt jest reprezentowany przez plik XML z
rozszerzeniem csproj. Opisuje on pliki źródłowe oraz inne elementy wchodzące
w skład projektu, ich właściwości oraz właściwości samego projektu, np. czy
produktem finalnym jest plik wykonywalny exe albo biblioteka dll.

Projekt jest osadzony w innym kontenerze, który nazywany rozwiązaniem
(solution)
. Rozwiązanie łączy ze sobą kilka projektów oraz zawiera pliki i
metadane, które ułatwiają definiowanie rozwiązania jako spójnej całości.
Obecnie tworzone oprogramowanie nie można zamknąć w jednym projekcie.
Można wymienić choćby aplikację w architekturze klient-serwer, czy choćby
aplikacja składająca się z pliku wykonywalnego oraz kilku bibliotek dll. Dzięki
rozwiązaniu otrzymano łatwy sposób dostępu do wszystkich projektów, które
są realizowane w trakcie budowy programu. Dostęp ten jest możliwy z
pojedynczej uruchomionej instancji Visual Studio. Plik reprezentujący
rozwiązanie ma rozszerzenie sln. Zawiera on informacje na temat projektów
wchodzących w skład rozwiązania, odwołanie do dodatkowych elementów
niezwiązanych z żadnym projektem oraz pewne ustawienia konfiguracyjne
używane przy budowaniu poszczególnych typów projektu. Drugim plikiem
związanym z rozwiązaniem jest plik z rozszerzeniem suo (Solution User
Options). Jest to plik ukryty i specyficzny dla konkretnego użytkownika.
Zawiera on pewne ustawienia dostosowujące rozwiązanie do użytkownika.
Rozwiązanie jest często utożsamiane z folderem, w którym znajdują się pliki
sln i suo oraz podkatalogi poszczególnych projektów.

Gdy rozpoczyna się prace w Visual Studio nad nowym projektem musimy
wybrać szablon aplikacji. Szablon aplikacji lub szablon projektu dostarcza

background image

kolekcję plików koniecznych do rozpoczęcia pracy nad danym typem projektu
wraz z szablonem kodu oraz odpowiednią strukturą i ustawieniami projektu.

Demonstracja:

1. Uruchom Visual Studio

Naciśnij przycisk Start systemu Windows, wybierz Wszystkie Programy
następnie Microsoft Visual Studio 2005/ Microsoft Visual Studio 2005.

2. Utwórz nowy projekt

a. Z menu File wybierz New/Project...

lub
W oknie Start Page wybierz Create:

Project...

Okno Start Page zawiera również szereg odsyłaczy do najnowszych
informacji związanych z środowiskiem Visual Studio jak i całą
Platformą .NET.

b. W oknie dialogowy New Project


Rys. 1.1 Okno dialogowe "New Project"

i. W drzewie Project types: rozwiń gałąź Visual C# i wybierz

element Windows.

ii. W liście Templates: wybierz szablon Console Application.

iii. W polu edycyjnym Name: podaj nazwę projektu: Program1.

iv. W polu edycyjnym Location: wybierz miejsce na dysku gdzie

będzie utworzony projekt przy pomocy przycisku Browse...: Moje
Dokumenty\Visual Studio 2005\Projects.

v. Zaznacz pole wyboru Create directory for solution

Zaznaczenie tego pola wyboru powoduje, że zostanie utworzony
katalog dla rozwiązania, w którym zostaną umieszczone pliki
rozwiązania (sln i suo) oraz w którym zostanie utworzony katalog
projektu. Gdy pole jest niezaznaczone folder projektu jest również
katalogiem rozwiązania.

background image

Uwaga:
Można utworzyć również puste rozwiązanie, bez projektu. W tym
celu w drzewie Project types: rozwiń gałąź Other Projects Types
i wybierz element Visual Studio Solutions, a następnie w liście
Templates: wybierz szablon Blank Solution.

vi. W polu edycyjnym Solution Name: podaj nazwę rozwiązania:

Demo2.

vii. Naciśnij przycisk OK.

3. Uruchom Eksplorator Windows i pokaż, jakie pliki i katalogi zostały

utworzone w systemie plików po utworzeniu aplikacji.
- Demo2 - katalog rozwiązania
- Demo2.sln - plik rozwiązania
- Demo2.suo - plik zawierający opcje skojarzone z rozwiązaniem
- Program1 - katalog projektu
- Program1.csproj - plik projektu
- Program.cs - plik zawierający kod programu
- Properties - katalog zwierający plik AssemblyInfo.cs
- AssemblyInfo.cs - plik służący do ustawienia właściwości podzespołu
- bin i obj - katalogi wykorzystywane przez środowisko w czasie procesu
kompilacji. Zawierają również skompilowany kod. W większości
przypadków Visual Studio potrafi automatycznie odtworzyć ich zawartość,
więc podczas archiwizacji kodu można je skasować.

4. Zamknij okno programu Eksplorator Windows i przełącz się do programu

Visual Studio.

5. Opisz główne okna środowiska Visual Studio



Rys. 1.2 Graficzny interfejs środowiska programistycznego Visual Studio.

Okno kodu (Code) - służy do pisania kodu źródłowego. Edytor kodu

Code

Solution Explorer

Properties

background image

dostarcza szereg właściwości ułatwiających tworzenie kodu takich jak:
- kolorowanie kodu
- ukrywanie bloków kodu (dyrektywa #region i #endregion)
- automatyczne uzupełnianie i generowanie kodu (Code Snippets)
- automatyczne przedefiniowanie kodu (Refactoring)
- podpowiedzi
- przeglądanie metadanych jako kodu źródłowego (metadata as source)
Solution Explorer - umożliwia przeglądanie elementów wchodzących w
skład poszczególnych projektów jak i rozwiązania. Daje również możliwość
zarządzania (usuwanie elementu, dodawanie elementu, tworzenie struktury)
zarówno pojedynczym projektem jak i całym rozwiązaniem przy pomocy
menu kontekstowego. Ułatwia również poruszanie się po kodzie. Dwukrotne
kliknięcie na plik w Solution Explorer powoduje pokazanie jego
zawartości w oknie edytora kodu.
Properties - okno pokazujące właściwości wybranego aktualnie elementu.
Zaznaczając np. element reprezentujący rozwiązanie lub projekt w oknie
Solution Explorer, możemy sprawdzić lokalizację pliku rozwiązania i
projektu na dysku.

6.

Pokaż jak można ukrywać, pokazywać, zmieniać położenie okien.
Dowolne okno można pokazać za pomocą odpowiedniej pozycji z menu
View. Dotyczy to oczywiście również pasków narzędziowych..
Dowolne okno dokowalne (dockable) można zadokować (przytwierdzić) do
dowolnej krawędzi okna głównego. Można je również połączyć w grupy.
Gdy chcemy zmienić pozycję okna wystarczy je przeciągnąć za pasek
tytułowy. W przypadku gdy chcemy oddzielić okno od grupy, "łapiemy" je
za zakładkę (tab).
W Visual Studio wprowadzono dodatkowe ikony, które pojawiają się w
momencie gdy zaczynamy przeciągać okno i pokazują gdzie należy umieści
kursor myszy, aby zadokować w danym miejscu przeciągane okno.
W celu zwiększenia obszaru roboczego możemy włączy automatyczne
ukrywanie się okien. Robimy to przy pomocy przycisku pineska - .

7.

Wewnątrz bloku metody Main napisz następujący kod:

static void Main(string[] args)

{

Console.WriteLine("Język C# jest łatwy");

Console.ReadLine();

}

8. Zbuduj program.

Z menu Build wybierz odpowiednią pozycję. Build Solution, Rebuild
Solution, Build Program1, Rebuild Program1

Wybrani pozycji Build Solution i Rebuild Solution powoduje, że będą
kompilowane pliki wszystkich projektów należących do rozwiązania. Build
Solution
kompiluje tylko pliki i komponenty, które były modyfikowane od
ostatniej budowy. Rebuild Solution kompiluje wszystkie pliki.
Analogicznie działają pozycje Build Program1 i Rebuild Program1, z tym
że dotyczą tylko pojedynczego projektu.Program1 jest nazwą projektu, który
ma być zbudowany. Jest to projekt zaznaczony w oknie Solution Explorer.
Budując program możemy również skorzystać z paska narzędzi Build

background image

Uwaga:
W Visual Studio możemy tworzy dwie wersje programu wykonywalnego:
- wersje Debug - wersja "rozwojowa", wspierająca pracę krokową
- wersja Release - wersja na sprzedaż, zoptymalizowana.

9. Uruchom program ze środowiska Visual Studio

Z menu Build wybierz odpowiednią pozycję Start Debugging lub Start
Without Debugging.
Start Debugging
- rozpoczyna pracę programu debugger- pracę krokową,
odpowiednio Start Without Debugging uruchamia tylko program, bez
programu debugger. Program możemy również uruchomić w trybie pracy
krokowej przy pomocy przycisku

,który znajduje się na pasku narzędzi

Standard.

10. Uruchom program w systemie Windows.

a. Uruchom program Eksplorator Windows.

b. Przejdź do katalogu Moje Dokumenty\Visual Studio 2005\Projects\

Demo2\Program1\bin\Debug.

c. Uruchom program Program1.exe

d. Zamknij uruchomiony program i Eksplorator Windows.

11. W środowisku Visual Studio pokaż, jak są pokazywane informacje na temat

błędów kompilacji.

a. W linijce kodu:

Console.WriteLine("Język C# jest łatwy");
skasuj zamykający cudzysłów.

b. Zauważ, że kod jest podkreślony czerwoną falowaną linią.

c. Pokaż okno Error List.

Okno Error List zawiera błędy, ostrzeżenia oraz komunikaty tworzone
przez edytor kodu jak i kompilator. Dwukrotne kliknięcie na linijkę z
danym błędem, powoduje otwarcie pliku i przeniesienie w miejsce
gdzie jest prawdopodobne źródło danego błędu.

d. Spróbuj zbudować program.

e. Pokaż okienko Output.

Okno to wyświetla różne informacje związane z różnymi cechami
zintegrowanego środowiska programistycznego (IDE). Między innymi
wyświetla również komunikaty kompilatora.

f. Popraw błąd w kodzie programu i zbuduj program.

12. Dołącz do bieżącego rozwiązania nowy pusty projekt.

a. Z menu File wybierz Add/New Project...

b. W oknie dialogowym Add New Project, dla typu projektu Visual

C#/Windows wybierz szablon Empty project i nadaj mu nazwę
Program2. Naciśnij przycisk OK.

13. Do nowego projektu dołącz istniejący plik źródłowy.

a. W oknie Solution Explorer zaznacz element reprezentujący nowo

utworzony projekt.

background image

b. Z menu Project wybierz pozycję Add Existing Item

c. W oknie dialogowym Add Existing Item - Program2 przejdź do

katalogu Kurs\Demo\Modul1, gdzie katalog Kurs jest katalogiem, do
którego zostały skopiowane pliki kursu. Wybierz plik Program1.cs.
Naciskając przycisk Add powodujemy skopiowanie wybranego pliku
do katalogu naszego projektu. Można też utworzyć tylko dowiązanie
do pliku - Add As Link.

14. Ustaw projekt Program2 jako projekt startowy.

Projekt startowy jest to projekt, który domyślnie jest uruchamiany. Jego
nazwa jest napisana czcionką pogrubioną.

a. W oknie Solution Explorer kliknij prawym klawiszem element

reprezentujący projekt Program2.

b. Z menu kontekstowego wybierz Set as StartUp Project

15. Zbuduj i uruchom projekt Program2.

background image

Podsumowanie

Na obecnym etapie student powinien::

Znać podstawowe pojęcia z algorytmiki.

Wiedzieć co to jest Platforma .NET

Potrafić korzystać ze środowiska Visual Studio

<

background image

Pytania sprawdzające

1. Wymień cechy charakterystyczne dla algorytmu.


Odp.
Cechy wynikające prosto z definicji to skończoność i określoność. Inne
cechy, którymi możemy opisywać algorytm to: poprawność, efektywność
(czas realizacji, zajętość pamięci), ogólność, czytelność, prostota, długość
kodu.

2. Jakim symbolem oznaczamy blok warunku?


Odp.

3. W którym miejscu rozpoczyna się wykonywać program w języku C#?


Odp.
Program w języku C# rozpoczyna się od metody Main, która może mieć
jedną z poniższych postaci:
static int Main(string[] args)
static int Main()
static void Main(string[] args)
static void Main()

Warunek

Tak

Nie

background image

4. Kiedy program w C# kończy działanie?


Odp.
Program w języku C# kończy się po wykonaniu instrukcji tuż przed
nawiasem klamrowym zamykającym blok kodu metody Main lub po
wywołaniu instrukcji return wewnątrz metody Main.

5. Połącz rozszerzenia plików z odpowiednim opisem.

1. *.cs

a) plik projektu

2. *.sln

b) opcje rozwiązania

3. *.suo

c) plik z kodem

4. *.csproj

d) plik rozwiązania


Odp.
1c, 2d, 3b, 4a.

6. Jakich symboli używamy do oznaczenia komentarza w C#?


Odp.
Do oznaczenia komentarzy w języku C# używamy następujących symboli:
- // - komentarz do końca linii
- /* ...*/ - komentarz "blokowy".

background image

Laboratorium

Ćwiczenie 1
Utworzenie programu, który wypisuje na ekranie powitanie i czeka na reakcje
użytkownika. Potem wypisuje "Koniec" i znów czeka na reakcję użytkownika i
następnie kończy działanie.

1. Uruchom Visual Studio

Naciśnij przycisk Start systemu Windows, wybierz Wszystkie Programy
następnie Microsoft Visual Studio 2005/ Microsoft Visual Studio 2005.

2. Utwórz nowy projekt

a. Z menu File wybierz New/Project...

b. W oknie dialogowym New Project określ następujące właściwości:

i. typu projektu: Visual C#/Windows

ii. szablon: Console Application

iii. lokalizacja: Moje Dokumenty\Visual Studio 2005\Projects\

iv. nazwa projektu: Powitanie.

v. nazwa rozwiązania: Lab1

3. Do metody Main dodaj następujący kod.

Console.WriteLine("Witam Pana(ią) imie nazwisko");

Console.ReadKey(true);

Console.Write("Koniec");

background image

Console.ReadKey(true);

W miejsce wyrazów imię i nazwisko wprowadź swoje własne imię i nazwisko.

4. Skompiluj i uruchom program.

5. Zamknij Visual Studio.

Ćwiczenie 2
Poprawianie błędów w istniejącym programie.

1. Uruchom Visual Studio

2. Otwórz rozwiązanie Kurs\Lab\Modul1\Start\Start.sln, gdzie

Kurs jest katalogiem, gdzie została skopiowana zawartość kursu. (Menu
File, element Open, następnie Project/Solution...)

3. Spróbuj skompilować program.

4. Korzystając z okna Error List lub Output popraw błędy w programie.

Po poprawieniu błędów program może wyglądać następująco:

using System;

namespace Bledy

{

class Program

{

static void

M

ain(string[] args)

{

Console.WriteLine("Zrobił wilk elektrownię, lecz
¬ by prąd uzyskać

"

);

Console.WriteLine("Spalał w niej cały węgiel z
¬kopalni od liska.");

Console.WriteLine(

"

Kopalnia z elektrowni cały

¬prąd zżerała,");

Console.WriteLine("Stąd brak światła i węgla. Ale
¬system działa!");

Console.WriteLine();

Console.WriteLine("Andrzej Waligórski")

;

Console.

ReadLine();

}

}

}

5. Uruchom program.

background image


Wyszukiwarka

Podobne podstrony:
01 Wprowadzenieid 2669 Nieznany
00 Wprowadzenieid 2064 Nieznany (2)
01 wprowadzenie 7dho2u6ta6v5ws4 Nieznany
01 wprowadzenieid 2985 Nieznany (2)
1 wprowadzenieid 10375 Nieznany (2)
1 Wprowadzenieid 8725 Nieznany (2)
5 FP Dyscyplina Wprowadzenie bu Nieznany (2)
001 CSR Wprowadzenieid 2187 Nieznany (2)
1 Wprowadzenieid 10037 Nieznany
1 Wprowadzenie 2id 8727 Nieznany (2)
LAB 4 Lab2 WprowadzenieMATLAB 2 Nieznany
1 Statystyka opisowa Wprowadze Nieznany (2)
Inzynieria wyklad wprowadzajacy Nieznany
CwiczenieNr1 WprowadzenieDoProg Nieznany
08 wprowadzenie do programowani Nieznany
01 wprowadzenie do teorii ekspl Nieznany
JAK WPROWADZIC SYSTEM ZASTEPOWY Nieznany
WPROWADZENIE DO PSYCHOLOGI WYKL Nieznany
4 Wprowadzenie do rachunkowosc Nieznany (2)

więcej podobnych podstron