po w1 id 364234 Nieznany

background image

1

1

Programowanie obiektowe

Wykład I

2

Zaliczenie

• Wykład kończy się zaliczeniem, które

obejmuje:

– ocena pracy na laboratoriach (30%)
– obrona pracy semestralnej w postaci

wykonanej samodzielnie przez studenta
aplikacji (50%)

– sprawdzian znajomości zagadnień

przedstawionych na wykładach (20%)

background image

2

3

Literatura – C#

• Eric Gunnerson: Programowanie w języku

C#. Mikom, 2001.

• Jesse Liberty, Brian MacDonald: C# 2005.

Wprowadzenie. Helion, 2007.

• Marcin Lis: C#. Ćwiczenia. Helion, 2006.
• Marian Mysior: C# w praktyce. Mikom,

2005.

• S. C. Perry, C# i .NET, Helion, Gliwice

2006.

4

Podstawy języka C#

background image

3

5

Podstawy języka C#

• Dane i ich typy
• Operatory
• Podstawowe typy instrukcji

6

Używanie C#

• Wymagana jest jedynie instalacja .NET

Framework, dostępnej bezpłatnie dla
każdego użytkownika ze stron MS

• Kompilacja ręczna:
• MS Windows:

– csc plik.cs
– plik.exe

• Linux/Unix:

– mcs plik.cs
– mono plik.exe

background image

4

7

Środowisko

Visual Studio 2008

• Środowisko Visual Studio 2008

Professional Edition dostępne
bezpłatnie dla studentów poprzez
MSDN AA

• Środowisko Visual Studio 2008

Express Edition dostępne bezpłatnie
dla każdego użytkownika ze stron
MSDN

8

Dane w C#

• C# jest językiem mocno typowanym
• Oznacza to, że, w odróżnieniu np. od

Pythona, tworząc zmienne musimy
określić ich typ, a konwersje między
różnymi typami muszą być
wykonane jawnie

• W C# dostępnych jest szereg typów

prostych oraz liczne typy złożone

background image

5

9

Typy proste

• Logiczny: bool

– Wartości: true, false

• Całkowite

– 8 bitowe: sbyte, byte, 16 bitowe: short, ushort, char

(znak w apostrofach), 32 bitowe: int, uint, 64 bitowe:
long, ulong

• Rzeczywiste

– Zmiennopozycyjne binarne: float, double,

zmiennopozycyjny dziesiętny: decimal

• Napisowy: string

– Napis w cudzysłowach
– Backslash ma znaczenie specjalne, np. ‘\n’
– @ wyłącza znaczenie specjalne, np. @„c:\n”

10

Tworzenie zmiennych typów

prostych

• Składnia: nazwa_typu nazwa_zmiennej;
• Przykłady:
int index;
int i, j, k;
long number_of_seconds_in_a_year;
real x, y, z, pi;
double d;
bool b, is_ok;

background image

6

11

Nazwy zmiennych

• Reguły tworzenia własnych nazw w

C#:

Zaczynamy literą lub znakiem
podkreślenia

Kontynuujemy cyfrą, literą lub znakiem
podkreślenia

Długość nazw jest nieograniczona

Wielkość liter ma znaczenie!

12

Konwencje nazewnicze

• Styl Pascala

– pierwsza litera każdego słowa w nazwie

jest dużą literą, np.
SredniaPredkoscNaGodzine

– zalecany do nazywania klas i metod

• Styl Camela

– jak Pascala, z tą róznicą, że pierwsze

słowo identyfikatora jest pisane małymi
literami, np. sredniaPredkoscNaGodzine

– służy do nazywania zmiennych

background image

7

13

Przestrzenie nazw

• Może się zdarzyć, że w tym samym programie używa się

takich samych nazw na określenie zupełnie różnych danych

• Przydatne wtedy są przestrzenie nazw, grupujące dane pod

wspólną nazwą kategorii

• Składnia definicji przestrzeni nazw jest następująca:
namespace NAZWA_PRZESTRZENI {
ZAWARTOŚĆ
}
• Elementy przestrzeni wywołuje się łącząc kropką nazwę

przestrzeni i nazwę jej elementu, np.:

NAZWA_PRZESTRZENI.NAZWA_ELEMENTU
• Przy pomocy słowa using możemy wskazać używane

przestrzenie nazw:

using NAZWA_PRZESTRZENI;

14

Instrukcja przypisania

• Instrukcja przypisania ma postać:

zmienna = wyrażenie;

• Jej działanie polega na nadaniu zmiennej

o podanej nazwie (lewa strona)
obliczonej wartości wyrażenia (prawa
strona), np.:

• Jeżeli wyrażenie zawiera nazwę funkcji,

zostanie ona wykonana, np.:

Instrukcja

Wynik

a=1;

a równe 1

b=2+3;

b równe 5

c=a+b;

c równe sumie a i b

Instrukcja

Wynik

a=Console.ReadLine(); wczyta warto

ść

a z klawiatury

background image

8

15

Konwersja typów

• Dane typów węższych mogą być konwertowane

niejawnie na typy szersze, np.:

byte b = 5;
int i = b;
long l = i;

• Każda inna konwersja może prowadzić do

zniekształcenia informacji, musi mieć więc postać
jawną, z podaniem nazwy typu docelowego
w nawiasach, np.:

int i = (int) l;
double d = 5.3;
int i = (int) d;

16

Podstawowe operatory

+

Dodawanie

||

Logiczne LUB

-

Odejmowanie

&&

Logiczne I

*

Mno

ż

enie

!

Logiczne NIE

/

Dzielenie

<

Mniejszy

%

Reszta z dzielenia

>

Wi

ę

kszy

&

Iloczyn bit

ó

w

<=

Mniejszy r

ó

wny

|

Suma bit

ó

w

>=

Wi

ę

kszy r

ó

wny

^

R

óż

nica symetryczna

==

R

ó

wny

~

Negacja bit

ó

w

!=

Nier

ó

wny

<<

Przesuni

ę

cie bit

ó

w w lewo

is

To

ż

samy

>>

Przesuni

ę

cie bit

ó

w w prawo

? :

Operator ternarny

background image

9

17

Instrukcje modyfikacji

• Odmianą instrukcji przypisania są instrukcje

modyfikacji, służące do zmiany wartości
zmiennych

• Instrukcje modyfikacji mają postać

zmienna

?

= wyrażenie;

gdzie

?

oznacza operator, np.: +, -, *

• Instrukcje modyfikacji wprowadzono dla

wygody programisty, każdą instrukcję
modyfikacji można zapisać jako instrukcję
przypisania, np.:

Instrukcja

Wynik

Odpowiednik

a+=1;

zwi

ę

kszy a o 1

a=a+1;

b-=a;

odejm ie od b zawarto

ść

a

b=b-a;

18

Instrukcje in/dekrementacji

• Odmianą instrukcji modyfikacji są instrukcje

inkrementacji i dekrementacji, służące do zwiększenia

lub zmniejszenia wartości zmiennych o 1

• Są cztery takie instrukcje:

– zmienna++;
– ++zmienna;
– zmienna--;
– --zmienna;

• Instrukcje inkrementacji i dekrementacji nie tylko

zmieniają wartość zmiennej, ale, w odróżnieniu od

instrukcji modyfikacji, zwracają ją, mogą być zatem

użyte w złożonych wyrażeniach

Instrukcja

Wynik

++a;

zwi

ę

kszy a o 1, zwróci warto

ść

zwi

ę

kszon

ą

b--;

zmniejszy b o 1, zwróci warto

ść

oryginaln

ą

background image

10

19

Separatory

20

Komentarze

• Do końca linii

// komentarz

• Wieloliniowe

/* komentarz1
Komentarz2 */

background image

11

21

Program główny

class NazwaProgramu {

public static void Main() {

...

}

}

22

Wywołanie podprogramów

• Podprogramy (funkcje) wywołuje się poprzez podanie ich

nazwy koniecznie zakończonej parą nawiasów
okragłych
(wewnątrz których można zamieścić ewentualne
parametry)

• Funkcje, które zwracają wartości wywołuje się w większym

wyrażeniu, np. przy okazji przypisania:

• Funkcje, które nie zwracają wartości lub nie interesują nas

one (tzw. procedury), wywołuje się samodzielnie:

Instrukcja

Efekt

a=Console.ReadLine();

Wprowadzi do a rezultat Console.ReadLine();

(wczyta warto

ść

a z klawiatury)

Console.ReadLine();

Czeka na wci

ś

ni

ę

cie ENTER

Obowiązkowe nawiasy

background image

12

23

Wyświetlanie

• Do wyświetlania danych na ekranie tekstowym służy

instrukcja Console.WriteLine

• Do oddzielania danych do wyświetlenia służy przecinek
• Po wyświetleniu tekstu, kursor przechodzi do nowej linii

– Aby tego uniknąć, używamy Console.Write

Instrukcja

Efekt

Console.WriteLine();

Pusta linia

Console.WriteLine(1);

Wy

ś

wietlona 1

Console.WriteLine(a);

Wy

ś

wietlona zawarto

ść

zmiennej a

Console.WriteLine("a");

Wy

ś

wietlona litera a

Console.WriteLine(a+2); Wy

ś

wietlona warto

ść

a zwi

ę

kszona o 2

24

Instrukcja skoku

int a = 0;
start:
System.Console.WriteLine(a);
a++;
goto start;

• Instrukcja skoku powoduje przejście

do podanej linii programu (etykiety)

background image

13

25

Typy konstrukcji

programistycznych

• Zgodnie z teorią programowania

strukturalnego, każdy program da się
przedstawić używając
tylko trzech rodzajów konstrukcji:

– Sekwencji (ciąg instrukcji wykonywany zawsze

tylko jeden raz, niezależnie od sytuacji)

– Wyboru (ciąg instrukcji, zależnie od sytuacji

wykonywany tylko jeden raz lub wcale)

– Pętli (ciąg instrukcji, wykonywany nieznaną

liczbę razy)

• Elementem konstrukcji mogą być

zarówno instrukcje proste, jak i złożone

– A zatem, można tworzyć dowolnie

skomplikowane konstrukcje hierarchiczne

26

Instrukcje złożone

• sekwencja
• wyrażenia warunkowe:

– wybór prosty
– wybór pełny
– wybór wielokrotny

• pętle:

– z testem na początku cyklu
– z testem na końcu cyklu
– o ustalonej liczbie cykli
– po elementach sekwencji

background image

14

27

Sekwencja

• Sekwencja to ciąg instrukcji wykonywanych niezależnie

od okoliczności i tylko jeden raz

• W C# sekwencję tworzymy umieszczając instrukcje

wewnątrz nawiasów klamrowych:

Sekwencja1.Instrukcja1
Sekwencja1.Instrukcja2

{

Sekwencja1.2.Instrukcja1

{

Sekwencja1.2.1.Instrukcja1

}

}

Sekwencja1.Instrukcja3

• Sekwencje są wykorzystywane jako zawartość (ciało)

definicji funkcji i innych instrukcji złożonych (to jest

wyborów i pętli)

28

Wybór prosty

• Polega na wykonaniu instrukcji tylko

przy spełnieniu podanego warunku

• W C# zapiszemy go następująco:

if (WARUNEK)
{

Instrukcja_pod_warunkiem1;
Instrukcja_pod_warunkiem2;

}
Instrukcja_bez_warunku;

• Instrukcje w klamrach wykonają się tylko wtedy,

gdy wartość wyrażenia WARUNEK będzie
prawdziwa

background image

15

29

Wybór prosty - przykład

if (a == 5)

System.Console.WriteLine("A to 5");

30

Wybór pełny

• Polega na wykonaniu przy spełnieniu

podanego warunku instrukcji A, a przy

jego niespełnieniu instrukcji B

• W Pythonie zapiszemy go następująco:

if (WARUNEK)
{

Instrukcja_pod_spelnionym_warunkiem;

}
else
{

Instrukcja_pod_niespelnionym_warunkiem;

}

background image

16

31

Wybór pełny - przykład

if (a == 5)

System.Console.WriteLine("A to 5");

else

System.Console.WriteLine("A to nie 5");

System.Console.WriteLine(

a==5 ? "A to 5" : "A to nie 5");

To samo z użyciem operatora ternarnego:

32

Wybór wielokrotny

• Polega na wykonaniu przy spełnieniu podanego

warunku instrukcji A, przy spełnieniu innego

podanego warunku instrukcji B, ...,

a przy niespełnieniu żadnego z podanych

warunków instrukcji Z

• W C# zapiszemy go następująco:

switch (WYRAŻENIE)
{

case WARTOŚĆ1:

Instrukcja1;
break;

case WARTOŚĆ2:

Instrukcja2;
break;

default:

Instrukcja_inna;
break;

}

background image

17

33

Wybór wielokrotny - przykład

switch(a)

{

case 0:

Console.WriteLine("a to 0");

break;

case 1:

case 2:

Console.WriteLine("a to 1 lub 2");

break;

default:

Console.WriteLine(

"a jest wi

ę

ksze ni

ż

2 ");

break;

}

34

Pętla

z testem na początku cyklu

• Polega na powtarzaniu wykonywania instrukcji

tak długo, jak zachodzi podany warunek

• W C# zapiszemy ją następująco:

while (WARUNEK)
{

Instrukcja_w_pętli

}

• Instrukcje w pętli wykonywane będą wiele razy,

aż warunek przestanie być spełniony

background image

18

35

Pętla z testem na początku

cyklu - przykład

using System;

class WhileLoop

{

public static void Main()

{

int myInt = 0;

while (myInt < 10)

{

Console.Write("{0} ", myInt);

myInt++;

}

Console.WriteLine();

}

}

36

Pętla

z testem na końcu cyklu

• Polega na powtarzaniu wykonywania instrukcji

tak długo, jak zachodzi podany warunek, ale co
najmniej jeden raz

• W C# zapiszemy ją następująco:

do
{

Instrukcja_w_pętli

} while (WARUNEK)

• Instrukcje w pętli wykonywane będą wiele razy,

aż warunek przestanie być spełniony

background image

19

37

Pętla z testem na końcu cyklu -

przykład

using System;

class WhileLoop

{

public static void Main()

{

int myInt = 0;

do {

Console.Write("{0} ", myInt);
myInt++;

} while (myInt < 10)

Console.WriteLine();

}

}

38

Pętla

o ustalonej liczbie cykli

• Polega na powtarzaniu wykonywania

instrukcji zadaną liczbę razy

• W C# zapiszemy ją następująco:
for (INICJACJA; WARUNEK;

MODYFIKACJA)

{

Instrukcja_w_pętli1

}

• Instrukcje w pętli

wykonane zostaną
zadaną liczbę razy

n

background image

20

39

Pętla o ustalonej liczbie cykli -

przykład

using System;

class ForLoop

{

public static void Main()

{

for (int i=0; i < 20; i++)

{

if (i == 10)

break;

if (i % 2 == 0)

continue;

Console.Write("{0} ", i);

}

Console.WriteLine();

}

}

40

Pętla

po elementach sekwencji

• Polega na powtarzaniu wykonywania

instrukcji dla każdego elementu
sekwencji

• W C# zapiszemy ją następująco:
foreach (ZMIENNA in LISTA_WARTOŚCI)
{

Instrukcja_w_pętli

}

• Instrukcje w pętli

wykonane zostaną tyle razy, ile jest
elementów sekwencji

n

background image

21

41

Pętla po elementach sekwencji

- przykład

using System;

class ForEachLoop

{

public static void Main()

{

string[] names = {"Cheryl", "Joe", "Matt",

"Robert"};

foreach (string person in names)

{

Console.WriteLine("{0} ", person);

}

}

}


Wyszukiwarka

Podobne podstrony:
PO W1 2 id 364238 Nieznany
po w1 id 557610 Nieznany
PO lab 5 id 364195 Nieznany
MSI w1 id 309783 Nieznany
po modernizacji id 364203 Nieznany
po w2 id 557612 Nieznany
po w3 id 557613 Nieznany
ALF po paracetamolu id 55196 Nieznany
4OS 2011 w1 id 39381 Nieznany (2)
PO W3 id 364241 Nieznany
Lunar 100 dzien po dniu id 2739 Nieznany
bd w1 id 81977 Nieznany (2)
Analiza finansowa w1 id 60384 Nieznany
po w4szablony id 557614 Nieznany
MSIZ w1 id 309829 Nieznany
PO lab 6 id 364196 Nieznany
Fund w1 2 id 181442 Nieznany
PO lab 5 id 364195 Nieznany
MSI w1 id 309783 Nieznany

więcej podobnych podstron